2012-03-26 52 views
1

我正在嘗試重置JLabels數組。標籤頂部有圖像,所以當我按下按鈕標籤應該被重置。我試圖這樣做如何重置JLabel

for(int i=0; i<desks.length; i++) 
    { 
    desks[i].setText(""); 
    rightPanel.add(desks[i]); 
    } 

因此,如果任何人有一個想法,這將是great.cheers。

+5

*「如果任何人有想法「*爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-03-26 13:10:48

+1

爲了更加清晰,您可以將這些解決方案中的一個包裝到一個方法中並將其命名爲'resetLabels'。 – mre 2012-03-26 13:52:21

回答

3

這是可能的方式之一

int n = panel.getComponentCount(); 
if (n > 0) { 
    Component[] components = panel.getComponents(); 
    for (int i = 0; i < components.length; i++) { 
     if (components[i] instanceof JLabel) { 
      JLabel label = (JLabel) components[i]; 
      label.setText(""); 
     } 
    } 
} 
+0

對於通用解決方案。不確定OP是否真的需要這樣做,因爲他/她已經在單獨的數組中有標籤引用 – GETah 2012-03-26 13:17:09

+0

@GETah嗯,我們看到有另一種數組類型,然後我最簡單的方法,以前upvoted – mKorbel 2012-03-26 13:20:17

4

您不必再次將標籤添加到內容窗格以重置其文本。 只要做到以下清理標籤文本:

for(int i=0; i<desks.length; i++) 
{ 
    desks[i].setText(""); 
} 
5

沒有必要將它們重新添加到面板上。只需將文本設置爲空字符串即可。

如果這沒有發生,確保你正在做的事件調度線程上,像這樣:

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     desks[i].setText(""); 
    } 
}); 
+0

對於「SwingUtilities」建議+1 + – GETah 2012-03-26 13:18:33