如何在Java中动态访问文本字段?

如何在Java中动态访问文本字段?,java,arrays,loops,variables,Java,Arrays,Loops,Variables,我们在访问TextField-s时遇到了一点问题 我们有81个(是81个)文本字段的列表 private TextField textField1 = new TextField(); private TextField textField2 = new TextField(); private TextField textField3 = new TextField(); ... 现在我们要从这些字段中获取文本并将它们存储在一个数组中 for loop data[i] = tex

我们在访问
TextField
-s时遇到了一点问题

我们有81个(是81个)文本字段的列表

private TextField textField1 = new TextField();

private TextField textField2 = new TextField();

private TextField textField3 = new TextField();

...
现在我们要从这些字段中获取文本并将它们存储在一个数组中

for loop 
  data[i] = textField???.getText();
我们现在如何将不断变化的编号
i
合并到字段名中


如果您有任何帮助或想法,我们将不胜感激。

最简单的方法是将所有
TextField
对象添加到
ArrayList
中,然后在每个字段上循环调用
getText()

您可以创建一个文本字段数组,因此您可以:

private Textfield[] array_textField = new Textfield[]();

private TextField textField1 = new TextField();
array_textField[1] = textField1;

private TextField textField2 = new TextField();
array_textField[2] = textField2;

private TextField textField3 = new TextField();
array_textField[3] = textField3;
...
for loop 
data[i] = array_textField[i].getText();

但是,您不再需要数据数组。

如果您不能按照其他答案的建议更改此代码,则需要使用Java反射API,如下所示:

import java.lang.reflect.Field;
import java.lang.Class;
int i = 0;
Class  aClass = MyObject.class
Field field = aClass.getField("someField"+i);
field.getText();

一个选项是迭代每个子组件,查看它是否是
TextField
,如果是,则将其值添加到数据数组中。但这可能不起作用,这取决于视图层次结构的结构

以下是如何实现这一目标的基本思路:

    for( Component component : container.getComponents() ){
        if( component instanceof TextField ){
            // Do whatever you need 
        }
    }