我创建了一个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 :(得分: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
}
}