我正在尝试同时在JFrame
中获取多个文本字段的值,有什么方法可以解决这个问题吗?目前我正在使用此代码生成我想要的效果,但必须有一种更简单的方法来循环它吗?
这是我正在使用的代码;它用于获取所有文本字段以获得总体重分数。
weight = new int[15];
weight[0] = Integer.parseInt(tf_weight1.getText());
weight[1] = Integer.parseInt(tf_weight2.getText());
weight[2] = Integer.parseInt(tf_weight3.getText());
weight[3] = Integer.parseInt(tf_weight4.getText());
weight[4] = Integer.parseInt(tf_weight5.getText());
weight[5] = Integer.parseInt(tf_weight6.getText());
weight[6] = Integer.parseInt(tf_weight7.getText());
weight[7] = Integer.parseInt(tf_weight8.getText());
weight[8] = Integer.parseInt(tf_weight9.getText());
weight[9] = Integer.parseInt(tf_weight10.getText());
weight[10] = Integer.parseInt(tf_weight11.getText());
weight[11] = Integer.parseInt(tf_weight12.getText());
weight[12] = Integer.parseInt(tf_weight13.getText());
weight[13] = Integer.parseInt(tf_weight14.getText());
weight[14] = Integer.parseInt(tf_weight15.getText());
我正在考虑做类似的事情;
String s = "tf_weight";
int inte = 1;
for(int i = 0; i<14; i++)
{
s = s + inte + ".getText()";
for(int j = 0; j<1; j++)
{
inte++;
criteria[i] = s.getText().replaceAll(" ", "~");
}
}
非常感谢任何帮助。
答案 0 :(得分:2)
这不起作用,因为包含"tf_weight4.getText()"
的字符串不是方法调用。即使在对象上反射性地调用方法,也需要首先使用该对象。
有几种方法可以做到这一点:
因此,当您第一次构建视图时,需要存储文本字段:
List<JTextField> weightFields = new ArrayList<>();
weightFields.add(tf_weight1);
weightFields.add(tf_weight2);
// and so on
然后,当你需要调用getText()
时List<Integer> weights = new ArrayList<>();
for (JTextField tf: weightFields) {
weights.add(Integer.parseInt(tf.getText()));
}
答案 1 :(得分:0)
创建一个tf_weight对象的数组,然后循环遍历 数组并调用getText方法。
像:
JTextField textFields[] = {tf_weight1, ..., tf_weight2};
for (int i = 0; i < textFields.length; i++) {
weight[i] = Integer.parseInt(textFields[i].getText());
}
答案 2 :(得分:0)
非常感谢!也许这可以帮助某人:
int num = 0;
int aux = 0;
int T = 0;
JTextField txt[] = {jTextField1, jTextField2, jTextField3, jTextField4, jTextField5, jTextField6, jTextField7};
for(int i = 1; i <= txt.length; i++){
num = Integer.parseInt(txt[i-1].getText());
T = aux + num;
aux = T;
this.jLabel2.setText(Integer.toString(T));
}
}