2017-08-01 15 views
0

私のプログラムでは、50以上のテキストフィールドがあり、クリアボタンがあります。私は、テキストフィールドをtextfield.setText( "")に設定するのではなく、それらをすべてクリアする方法があるかどうか疑問に思っていました。私はこの方法がうまくいくことを知っていますが、他に何が可能か疑問に思っています。複数のJTextFieldクリア

おかげ

+3

'一覧'を作成し、それを反復処理。 –

+2

すべての 'JtextField'をリストに追加し、リストを反復して値をクリアします。 – zombie

答えて

0

あなたは関数にフレーム全体を渡すと、このフレーム内のすべてのコンポーネントを取得し、それは静的な機能を持つI

クラスだけ明らかテキストフィールドであるかどうかを確認することができます

public class JCTest 
{ 
    public static void Clear(JInternalFrame intFrame) 
    { 
     if (intFrame == null) 
      return; 
     Container con = intFrame.getContentPane(); 
     for (Component c : con.getComponents()) 
     { 
      if (c instanceof JTextField) 
      { 
       JTextField j = (JTextField)c; 
       j.setText(""); 
      } 
     } 
    } 
} 
は、

public class Main 
{ 
    public static void main(String[] args) 
    { 
     JInternalFrame intFrame = new JInternalFrame(); 
     JCTest.Clear(intFrame); 
    } 
} 

をそれとも内部でそれを行う:

それを呼び出しますビュークラス

for (Component C : this.getComponents()) 
{  
    if (C instanceof JTextField){ 

     ((JTextField) C).setText(""); 
    } 
} 
0

すべてのテキストフィールドでリストを作成し、ちょうどそれらをすべてクリア:

List<JTextField> fields = new ArrayList<>(); 
fields.add(new JTextField()); 
fields.add(new JTextField()); 
fields.add(new JTextField()); 

fields.forEach((a) -> a.setText("")); 
関連する問題