2016-06-13 62 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++) { 

    } 
} 

我该如何修改我的double for循环来把我的JTextField放在JPanel上?

我已经把答案中给出的代码放到我的构造函数中,并且它没有错误地编译。但是,当我运行该程序时,添加的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 []数组。因此,这里的代码:

请注意修改的代码(即最佳实践类的东西1.使用驼峰而不是下划线 2.你不需要在你的文本框对象实例化 3两条独立线路。你可以只声明类型列表中的对象的左手分配 4.您可以使用钻石操作<>在右侧(从Java 7)

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 
    } 
}