-1

我正在使用 Netbeans 创建 Java 应用程序。我创建了一些从jTextField1through命名的文本字段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());
    }
}
4

4 回答 4

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 & Replace 自动替换所有变量。例如,假设变量被调用jField1jField2,你可以这样做:

  • 在项目中编辑 > 替换
  • 包含文字:jField(\d+)
  • 勾选“正则表达式”
  • 用。。。来代替:fields[$1]
  • 范围:选择您的文件
  • 查找 -> 它会打开一个搜索窗口
  • 点击“替换匹配”
  • 然后,您需要通过将所有索引减一来完成它(必须是手动的)

瞧,不到一分钟。

或者,如果只有几个变量需要更改,您可以简单地将光标放在变量名称上,按下CTRL+R并更改名称:它会自动更改项目中该变量的所有出现。

于 2013-05-10T09:29:22.393 回答
1

正如其他提到的,你不能这样做。

您可以在这里做的最好的事情是创建一个 s 数组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)。

于 2013-05-10T09:35:53.247 回答
0

使用“普通”Java 无法做到这一点。

您可以(例如)创建表示字段名称的字符串,并使用反射来查找Field对象,然后检索它们的值。但这是复杂、脆弱和低效的……而且是个坏主意。

更好的解决方案是不将文本字段表示为单个变量。改用数组,然后你可以索引它们。

于 2013-05-10T09:32:24.250 回答
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++;
        }
    }
}
于 2013-05-10T12:09:03.593 回答