使用String []中保存的名称调用多个对象的方法

时间:2013-05-07 16:17:37

标签: java swing object

我使用Netbeans IDE 7.3创建了多个JtextField,使用了Design Inerface,并且我已经存储了在字符串数组中创建的所有对象名称。 我想创建一个循环来读取所有JTextFields中包含的文本,以便打印所有字段。

例如:

I have automatically created:
class.javax.swing.JTextField a_field;
class.javax.swing.JTextField b_field;

class.javax.swing.JTextField a_value;
class.javax.swing.JTextField b_value;

*(实际上,我有超过50个字段,而不仅仅是“a”和“b”)

我已在字符串数组中列出了所有内容

String[] allTextFields={"a","b"};

我想做的是这样的事情:

for(int i=0 ; i<allTextFields.length() ; i++){
   String field = (allTextFields[i]+"_field").getText();
   String value = (allTextFields[i]+"_value").getText();

   System.out.println(field + " has value: " + value);
}

因为它们已经被创建,所以我不能将它们声明为JTextFields的数组......所以,我需要的是将字符串:(allTextFields [i] +“_ field”)转换为对已定义对象的调用

1 个答案:

答案 0 :(得分:0)

将您的文本字段放入JPanel,然后您可以将所有组件放入JPanel

例如:

    JPanel panel1 = new JPanel();
    add(panel1);

    JTextField field1 = new JTextField("field1");
    field1.setName("field1");
    panel1.add(field1);

    JTextField field2 = new JTextField("field2");
    field2.setName("field2");
    panel1.add(field2);

    Component[] components = panel1.getComponents();
    if (null != components) {
        for (Component component : components) {
            if (component instanceof JTextField) {
                System.out.println(((JTextField)component).getText());
            }
        }
    }