2016-06-13 17 views
0

JtextFieldの配列のArrayListを作成しましたが、JPanelに配置する方法がわかりません。JTextFieldの配列のArrayListをJPanelに配置

ArrayList <JTextField []> text_field; 
text_field = new ArrayList <JTextField []>(); 

for (int i = 0; i < text_field.size(); i++) { 
    for (int j = 0; j < 8; j++) { 

    } 
} 

JTextFieldをJPanelに配置するためにdouble forループを変更するにはどうすればよいですか?

答えに与えられたコードを私のコンストラクタに入れました。エラーなしでコンパイルされました。ただし、プログラムを実行すると、追加されたTextFieldがGUIに表示されません。なぜこれが起こるのですか?ここで

ArrayList <JTextField []> text_field; //class variable 

constructor { 
    text_field = new ArrayList <JTextField []>(); 

    for (int i = 0; i < text_field.size(); i++) { 
    JTextField field [] = text_field.get (i); 

    for (int j = 0; j < field.length; j++) { 
     JTextField jtf = field [j]; 
     pan2.add (jtf); 
    } 
    } 
} 

答えて

0

は、あなたがこれを行うことができます方法は次のとおりです。

ArrayList <JTextField []> text_field; 
text_field = new ArrayList <JTextField []>(); 

for (int i = 0; i < text_field.size(); i++) 
{ 
    JTextField [] arr = text_field.get(i); 
    for (int j = 0; j < arr.length; j++) 
    { 
     JTextField jtf = arr[j]; 
     // add the JTextField to the JPanel here 
     // JPanel.add(jtf) 
    } 
} 

ます。また、このような各ループのために使用することができます。

for (JTextField [] arr : text_field) 
{ 
    for (JTextField jtf : arr) 
    { 
     // add the JTextField to the JPanel here 
     // JPanel.add(jtf) 
    } 
} 
0

うーん... 0何を知らずに - 8を想定していますあなたのネストされたforループを表現するために、あなたが実際にしようとしていることがJTextField []配列を反復していると想定するつもりです。だからここのコードがあります:

コードに変更をメモしてください(つまりベストプラクティスのものあなたのTextFieldオブジェクトのインスタンス化 3に2つの別々の行を必要としない 2. 1.キャメルケースの代わりにアンダースコアなどがあります。あなただけのあなたが

List<JTextField[]> textField = new ArrayList<>(); 
for (int i = 0; i < textField.size(); i++) { 
    JTextField[] jtfArray = textField.get(i); 
    for (int j = 0; j < jtfArray.length; j++) { 
     add(jtfArray[i]);//add to the JPanel 
    } 
} 
(Javaの7以降)右側にダイヤモンド演算子<>を使用することができます 4.オブジェクトの左側の割り当てににリストとして型を宣言することができます