Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问动态创建的控件Java Swing的值_Java_Swing - Fatal编程技术网

访问动态创建的控件Java Swing的值

访问动态创建的控件Java Swing的值,java,swing,Java,Swing,我在JavaSwing中工作,正在生成一个动态表单,其中包含控件名opc1_1、opc1_2、opc1_3、opc2_1、opc2_2等。 如何动态获取每个控件的值? 我举了一个很糟糕的例子来说明 for(int i = 1; i < 10; i ++) { Control objControl = get("opc1_" + i); if(objControl == JComboBox) System.out.println(objControl.ge

我在JavaSwing中工作,正在生成一个动态表单,其中包含控件名opc1_1、opc1_2、opc1_3、opc2_1、opc2_2等。 如何动态获取每个控件的值? 我举了一个很糟糕的例子来说明

for(int i = 1; i < 10; i ++) {
    Control objControl = get("opc1_" + i);
      if(objControl == JComboBox)
        System.out.println(objControl.getSelectedItem().toString());
      else if(objControl == JTextField)
        System.out.println(objControl.getText); 
}
for(int i=1;i<10;i++){
控制对象控制=获取(“opc1_”+i);
if(objControl==JComboBox)
System.out.println(objControl.getSelectedItem().toString());
else if(objControl==JTextField)
System.out.println(objControl.getText);
}

非常感谢

使用数组/列表存储
控件
对象,代码中
控件
对象的名称并不重要

然后,只需像对任何其他数组/列表一样迭代数组/列表,即可获得每个
控件
对象的值


另外,
=
用于赋值,
=
用于比较,
instanceof
用于检查对象是否为特定类型。在良好的OO设计中,通常会尝试并避免使用
instanceof
操作符。

使用数组/列表来存储
控件
对象,代码中
控件
对象的名称并不重要

然后,只需像对任何其他数组/列表一样迭代数组/列表,即可获得每个
控件
对象的值


另外,
=
用于赋值,
=
用于比较,
instanceof
用于检查对象是否为特定类型。在良好的OO设计中,通常会尝试并避免使用
instanceof
操作符。

注意,组件有getName()和setName()方法。当您向容器中添加越来越多的组件时,它们就是您的朋友。我认为那个容器没有方法 getComponentNamed(字符串s),但它很容易编写


我支持气垫船关于使用地图的极好建议。

注意组件有getName()和setName()方法。当您向容器中添加越来越多的组件时,它们就是您的朋友。我认为那个容器没有方法 getComponentNamed(字符串s),但它很容易编写


我支持气垫船关于使用Map的极好建议。

Yep,如果您想通过字符串获得控件,可以使用HashMap。1+@hovercraftfullofels是的,没错。对于这个具体的例子,我看不出地图有什么用处,它似乎只是一个不必要的补充。然而,@NestorInc,每当您需要将字符串“映射”到特定的值/变量时,您可以使用类似于
HashMap
的东西。如果我需要一组JLabel/JTextField对,我有时会使用字符串数组作为标签,然后创建一个映射,并在for循环中创建我的标签和字段,添加到映射和GUI中。然后,我可以从一个公共方法中的任何字段提取文本,该方法将map和JLabel使用的字符串作为其键。@hovercraftfullofels是的,在这种情况下,使用
map
会更有意义。我在菜单和菜单项方面也做过类似的工作。@AusCBloke您的代码在我的示例中帮助了我很多,我在快速编写代码时使用了“=”。我曾经按照你的建议再次表示感谢是的,如果你想通过字符串获得控件,也可以使用HashMap。1+@hovercraftfullofels是的,没错。对于这个具体的例子,我看不出地图有什么用处,它似乎只是一个不必要的补充。然而,@NestorInc,每当您需要将字符串“映射”到特定的值/变量时,您可以使用类似于
HashMap
的东西。如果我需要一组JLabel/JTextField对,我有时会使用字符串数组作为标签,然后创建一个映射,并在for循环中创建我的标签和字段,添加到映射和GUI中。然后,我可以从一个公共方法中的任何字段提取文本,该方法将map和JLabel使用的字符串作为其键。@hovercraftfullofels是的,在这种情况下,使用
map
会更有意义。我在菜单和菜单项方面也做过类似的工作。@AusCBloke您的代码在我的示例中帮助了我很多,我在快速编写代码时使用了“=”。我过去常常再次听从你的建议表示感谢