循环遍历多个文本字段

时间:2015-04-21 11:43:44

标签: java loops jframe textfield

我正在尝试同时在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(" ", "~");
       }
    }

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

这不起作用,因为包含"tf_weight4.getText()"的字符串不是方法调用。即使在对象上反射性地调用方法,也需要首先使用该对象。

有几种方法可以做到这一点:

  • 保留文本字段列表,然后迭代它以调用getText()。这是最简单,最有效的方式。
  • 获取包含文本字段的父组件,迭代其子项,过滤掉文本字段,然后对它们调用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));
    }

}