访问TextField
时,我们遇到了一些问题。
我们列出了81个(是81个)textFields
private TextField textField1 = new TextField();
private TextField textField2 = new TextField();
private TextField textField3 = new TextField();
...
现在我们想从这些字段中获取文本并将它们存储在数组中。
for loop
data[i] = textField???.getText();
我们现在如何将更改后的号码i
纳入字段名称?
感谢任何帮助或想法。
答案 0 :(得分:2)
最简单的方法是将所有TextField
个对象添加到ArrayList
,然后遍历每个字段上调用getText()
的列表。
答案 1 :(得分:0)
你可以创建一个Textfields数组,所以你可以:
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();
但是你不再需要数据阵列了。
答案 2 :(得分:0)
如果您无法按照其他答案的建议更改此代码,则需要使用Java Reflection 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();
答案 3 :(得分:0)
一个选项是遍历每个子组件,查看它是否为TextField
,如果是,则将其值添加到数据数组中。这可能不起作用,具体取决于视图层次结构的结构。
以下是如何实现这一目标的基本想法:
for( Component component : container.getComponents() ){
if( component instanceof TextField ){
// Do whatever you need
}
}