访问动态创建的控件Java Swing的值
我在JavaSwing中工作,正在生成一个动态表单,其中包含控件名opc1_1、opc1_2、opc1_3、opc2_1、opc2_2等。 如何动态获取每个控件的值? 我举了一个很糟糕的例子来说明访问动态创建的控件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
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您的代码在我的示例中帮助了我很多,我在快速编写代码时使用了“=”。我过去常常再次听从你的建议表示感谢