我使用Netbeans创建Java应用程序。我创建了一些文本字段,其名称来自jTextField1
到jTextField16
。现在我必须将这些文本字段的值存储在一个二维数组中,但我不知道如何这样做。我想用for循环访问所有文本字段。
我应该如何使用for循环来解决这些变量?
int Count=0;
for (int i=0; i<4; i++) {
for (int j=0; j<4; j++) {
a[i][j] = Integer.parseInt(jTextField1.getText());
}
}
答案 0 :(得分:3)
而不是
JTextField field1 = ...;
JTextField field2 = ...;
...
JTextField field16 = ...;
您可以使用数组:
JTextField[] fields = new JTextField[16];
fields[0] = ...;
fields[1] = ...;
...
fields[15] = ...;
然后你的循环变得容易写:
a[i][j] = Integer.parseInt(fields[i * 4 + j].getText());
修改强>
在Netbeans中,您可以使用Find&amp;替换以自动替换所有变量。例如,假设变量名为jField1
,jField2
等,您可以执行以下操作:
jField(\d+)
fields[$1]
Et瞧,不到一分钟。
或者,如果只需更改几个变量,您只需将光标放在变量名称上,按 CTRL + R 并更改名称:它将自动更改所有出现的变量你项目中的那个变量。
答案 1 :(得分:1)
正如其他人提到的那样,你不能这样做。
你可以做的最好的事情是创建一个JTextField
的数组并在其上循环:
int k = 0;
for (int i=0; i<4; i++) {
for (int j=0; j<4; j++) {
a[i][j] = Integer.parseInt(jTextFieldArray[k].getText());
k++;
}
}
这将根据需要循环遍历数组内的组件(从0到15)。
答案 2 :(得分:0)
“普通”Java无法做到这一点。
您可以(例如)创建表示字段名称的字符串,并使用反射来查找Field
个对象,然后检索它们的值。但这是复杂,脆弱和低效的......而且是个坏主意。
更好的解决方案是不存储将文本字段表示为单个变量。改为使用数组,然后您可以索引它们。
答案 3 :(得分:0)
终于这样做了
int a[][]=new int[4][4];
void convert() {
JTextField jt[] = new JTextField[]{jTextField1, jTextField2, jTextField3, jTextField4, jTextField5, jTextField6, jTextField7, jTextField8, jTextField9, jTextField10, jTextField11, jTextField12, jTextField13, jTextField14, jTextField15, jTextField16};
int count=0;
for (int i=0; i<9; i++) {
for (int j=0; j<9; j++) {
a[i][j]=Integer.parseInt(jt[count].getText());
count++;
}
}
}