如何在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
}
}