2012-03-26 35 views
1

JLabelの配列をリセットしようとしています。ラベルの上にイメージがあるので、ボタンを押すと、ラベルはリセットされるはずです。私はそのようにしようとしましたJLabelをリセットするには

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

だから誰でも考えがあればgreat.cheersとなります。

+5

*「誰もが持っている場合アイデア "*より良いヘルプのためには、[SSCCE](http://sscce.org/)を投稿してください。 –

+1

より明確にするために、これらのソリューションの1つをメソッドにラップし、 'resetLabels'という名前を付けることができます。 – mre

答えて

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

一般的な解決策の+1。もし彼/彼女がすでに別のアレイにラベル参照を持っているので、OPが本当にこれを行う必要があるかどうかわからない – GETah

+0

@GETah hmmmもう一つの配列タイプが見えて、私の最も簡単な方法は、以前upvoted – mKorbel

4

テキストをリセットするために、内容ペインにラベルを再度追加する必要はありません。 ラベルテキストまでクリアするには、次だけの操作を行います。

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

パネルにそれらを再度追加する必要はありませんが。テキストを空の文字列に設定するだけで十分です。この場合は

はそうと、あなたはイベントディスパッチスレッド上でそれをやっていることを確認し、起きていない。

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

+1 SwingUtilitiesアドバイス – GETah

関連する問題