Java 使用不同的'访问变量;姓氏';
我正在使用Netbeans创建Java应用程序。我从Java 使用不同的'访问变量;姓氏';,java,swing,jtextfield,Java,Swing,Jtextfield,我正在使用Netbeans创建Java应用程序。我从jTextField1到jTextField16创建了一些名为它的文本字段。现在我必须将这些文本字段的值存储在一个2d数组中,但我不知道如何做到这一点。我想使用for循环访问所有文本字段 我应该如何使用for循环处理这些变量 int Count=0; for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { a[i][j] = Integer.parseInt(j
jTextField1
到jTextField16
创建了一些名为它的文本字段。现在我必须将这些文本字段的值存储在一个2d数组中,但我不知道如何做到这一点。我想使用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());
}
}
int Count=0;
对于(int i=0;i而不是
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中,您可以使用“查找和替换”自动替换所有变量。例如,假设变量名为jField1
、jField2
等,您可以执行以下操作:
- 在项目中编辑>替换
- 包含文本:
jField(\d+)
- 勾选“正则表达式”
- 替换为:
字段[$1]
- 范围:选择您的文件
- 查找->打开一个搜索窗口
- 单击“替换匹配项”
- 然后,您需要通过将所有索引减一(必须是手动的)来最终确定它
瞧,不到一分钟
或者,如果只有几个变量需要更改,您可以简单地将光标放在一个变量名上,按CTRL+R并更改名称:它将自动更改项目中该变量出现的所有情况。使用“普通”Java无法做到这一点
您可以(例如)创建表示字段名的字符串,并使用反射来查找字段
对象,然后检索它们的值。但这是复杂、脆弱和低效的……这是一个坏主意
更好的解决方案是不将文本字段存储为单个变量。使用数组代替,然后可以对它们进行索引。正如其他提到的,您不能这样做
在这里,您可以做的最好的事情是创建一个JTextField
s数组并在其上循环:
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++;
}
}
intk=0;
因为(inti=0;i最终是这样做的
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++;
}
}
}
int a[][]=新int[4][4];
void convert(){
JTextField jt[]=新的JTextField[]{jTextField1、jTextField2、jTextField3、jTextField4、jTextField5、jTextField6、jTextField7、jTextField8、jTextField9、jTextField10、jTextField11、jTextField12、jTextField13、jTextField14、jTextField15、jTextField16};
整数计数=0;
对于(int i=0;i为什么您没有尝试创建jtextfield的数组呢?请说得更具体一点很难理解您想要做什么您在这里展示的代码是将jTextField1
的整数值放置在2D数组的每个位置。您的意思不是:parseInt(jtextfield.getText())
?您试图做的事情之所以不可能(或故意困难),是有原因的,它会导致真正可怕的代码,没有类型检查等变量“start”+“end”的类型无法在编译时确定,因此编译器只能假设它工作。正如其他人所说,数组是这个问题的正确解决方案。无论如何,我知道这个方法,但有什么更简单的方法吗(我懒得更改变量名)@Sar009恐怕我无法解决您的懒惰问题。但是请注意,通过简单的查找和替换,它不应该超过一分钟,也就是说,比您发布问题所用的时间还短。@Sar009我保证这样做将解决您在其netbeans好友之后寻找phatom错误的可怕调试时间,并且您必须转到每个文本字段单独修改:(@Sar009否,您需要学习如何使用IDE;-)。例如,使用正则表达式。