2017-05-03 80 views
1

我已經更改了代碼,所以它可能更容易解釋,現在是我試圖解決的最初問題。我首先創建一個JLabel,然後嘗試更新其中包含的文本,方法是添加一個新行,然後添加更多文本。我看過類似的問題,但解決方案沒有幫助。這是一個時間表應用程序。如何添加到以前的JLabel

private void createAndShowGUI(String [] lessons) { 

... 

Container pane = frame.getContentPane(); 
GridBagConstraints c = new GridBagConstraints(); 
... 

label1 = new JLabel(""); 
    label1.setFont(new Font("Lucida Grande", Font.PLAIN, 10)); 
    c.fill = GridBagConstraints.HORIZONTAL; 
    c.weightx = 0.0; 
    c.gridwidth = 3; 
    c.gridx = 2; 
    c.gridy = 2; 
    pane.add(label1, c); 

for(int i=0; i<lessons.length; i++) { 
     String format = lessons[i]; 
     String [] t = format.split(","); 
     if (t[0].equals("1")) { 
      if (t[1].equals("1")) { 
       label1.setText(label1.getText() + "lecture: " + t[3] + " unit: " + t[4] + " room: " + t[2]); 

... 

現在,如果我不更改其他位置寫入的變量,我的輸入保持不變。我目前的輸入是教訓[0] =「1,1,1,taqi,maths,bob」,lesson [1] =「1,1,2,john,physics,jim」,還有其他幾個,但他們是不相關的,因爲它們都在相同的情況下結束。

內label1.setText,我想補充label1.getText之間的新線()「講座:」。所以當我運行我的代碼時,我有一個講座,單元和房間,下面我還有另一個講座,單元和房間。現在爲了更清楚地瞭解我的輸出,t [0]是講座的日子,t [1]是講座的時間。我試圖在同一時間和日期在不同房間顯示多個課程。

+2

爲了更好地幫助越早發佈有效[MCVE]演示您的問題。包括一個圖像或ascii藝術的輸出如果需要看起來像 – Frakcool

+0

我想我還沒有理解你的錯誤。它掛着嗎?你是否收到錯誤信息?如果不是,結果如何? html是否跟着? – user7185318

+0

我意識到我的問題並不清楚,我已經更新了它,希望它更有意義。不,我沒有收到錯誤消息,它編譯並運行,但我只在JPanel中得到一行,至少應該有兩行。 – Amarnath

回答

1

JLabel不識別換行符。文本顯示在一行中,並且新行字符被忽略。

您可以在JLabel使用HTML:

label.setText("<html>line1<br>line2</html"); 

或者你可以使用一個JTextArea和追加多行文字:

textArea.append("\nline2"); 
+0

由於某些原因,當我將我的代碼添加到'label1.setText(「」+ label1.getText()+「
講座:」+ t [3] +「單元:」+ t [4] +「room :「+ t [2] +」「);',它顯示了一行,而不是前一行,這是行進入其他框,但現在第一行下面沒有行。我在想,如果它可能與變量'約束c'? – Amarnath

0

我沒有使用的HTML代碼正確。我發現我不得不在文本輸入的最開始處保留"<html>"(即初始輸入到JPanel中),即使稍後向文本輸入添加了更多文本,並且"</html>"也在該字符串的末尾。 "<br>"可以在字符串中的任何位置使用。

修訂代碼:

JLabel label1 = new JLabel("<html>"); 

... 

for(int i=0; i<lessons.length; i++) { 
     String format = lessons[i]; 
     String [] t = format.split(","); 
     if (t[0].equals("1")) { 
      if (t[1].equals("1")) { 
       label1.setText(label1.getText() + "lecture: " + t[3] + " unit: " + t[4] + " room: " + t[2] + "<br>"); 

       ... 
      } 
     } 
} 
label1.setText(label1.getText() + "</html>"); 
+0

我最初保持循環,在文本輸入的隨機位置。因此我的錯誤。 – Amarnath