将JTextField数组的ArrayList放到JPanel上

时间:2016-06-13 02:27:24

标签: java arrays arraylist jtextfield

我创建了一个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);
    }
  }
}

2 个答案:

答案 0 :(得分: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)
    }
}

答案 1 :(得分:0)

嗯...不知道你的嵌套for循环中应该代表什么0 - 8,我将假设你实际上要做的是迭代JTextField []数组。所以这是代码:

请注意代码中的修改(即最佳实践内容,例如1.使用camelCase而不是下划线 2.在textField对象实例化中不需要两个单独的行 3.您可以在对象的左侧赋值中将类型声明为List in 你可以使用钻石算子&lt;&gt;在右侧(自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
    }
}