2014-01-06 61 views
1

我有一些JLabels爲我的更新程序,除文本外,一切運行平穩。文字全部顯示在一起?

文本全部亂碼&看起來很喜歡它全部一次顯示。我已經嘗試將每個文本設置爲它自己的標籤&,設置當方法被調用爲不透明時不相關的文本。但是我得到了nullpointerexceptions。我也嘗試對我的JFrame進行分層,但是它會擺脫我的JProgrssbar?

這裏是我的代碼:

public static void displayText(int Stage) { 
    String txt = ""; 
    if (Stage == 1) { 
     txt = "Checking Cache..."; 
    } 
    if (Stage == 2) { 
     txt = "Downloading Cache..."; 
    } 
    if (Stage == 3) { 
     txt = "Cache Download Complete!"; 
    } 
    if (Stage == 4) { 
     txt = "Unpacking Files..."; 
    } 
    if (Stage == 5) { 
     txt = "Launching Client!"; 
    } 
    lbl = new JLabel(); 
    lbl.setText(txt); 
    lbl.setBounds(137, 11, 200, 14); 
    frame.getContentPane().add(lbl); 
} 

我試過在幾個不同的方式&還是做同樣的事情重新格式化...

的它在做什麼一個例子: enter image description here

+0

請顯示您的其他代碼。另外,爲什麼爲每個調用創建一個新標籤? –

+0

只需刪除'lbl = new JLabel();'''''''''''''''''''''''''''''' – alex2410

回答

7

您每次創建一個新標籤並將其放在舊的標籤上。在班級的範圍內聲明標籤(更具描述性的名稱也會很好)。然後,在你的方法中,只能調用lbl.setText(txt)。這將使用更新的文本更新預先存在的標籤。

它應該是這個樣子:

public class yourGUI { 
    private JLabel progressLabel; 

    public static void main(String[] args) { 
     progressLabel = new JLabel(); 
     progressLabel.setBounds(137, 11, 200, 14); 
     frame.getContentPane().add(progressLabel); 
    } 

    public static void displayText(int Stage) { 
     String txt = ""; 
     if (Stage == 1) { 
      txt = "Checking Cache..."; 
     } else if (Stage == 2) { 
      txt = "Downloading Cache..."; 
     } else if (Stage == 3) { 
      txt = "Cache Download Complete!"; 
     } else if (Stage == 4) { 
      txt = "Unpacking Files..."; 
     } else { //assuming (Stage == 5), this is up to your discretion 
      txt = "Launching Client!"; 
     } 
     progressLabel.setText(txt); 
    } 
}  

而且,沒有必要每個if語句,每一次檢查。

+0

嘿渦輪謝謝。至於如果我只是在嘗試某些東西而忘記將它改回來,那麼我應該如此。 – Ryan

+0

@瑞安確定的事情! – turbo