【问题标题】:Getting java components' value on the basis of their variable name根据变量名获取java组件的值
【发布时间】:2013-10-20 11:30:24
【问题描述】:

我想从 20 个 java 组件中获取值,其中 10 个是 jtextfields,10 个是 jcombobox,它们的变量名不是 setName()。

这些组件以行格式放置意味着 jtextfield1 然后 cmbbox1 然后 jtextfield2 然后 cmbbox2 等等。 现在我想遍历这些组件,并以与将它们放置为 jtextfield1 的值然后 cmbbox1 的值等等相同的方式,一一获取它们的值。

我尽我最大的努力寻找答案,但一切都顺理成章。等待您的精彩回复。

【问题讨论】:

  • 不要试图反射性地获取组件。而是将它们放入一个数组中。

标签: java components


【解决方案1】:

由于您想保留插入顺序,您可以使用 ArrayList。

您可以执行以下操作 -

    List<JComponent> jComponentList = new ArrayList<>();
    //add components
    for(int i=0;i<10;i++){
        JTextField textField = new JTextField();
        JComboBox comboBox = new JComboBox();
        textField.setName("textField" + i);
        comboBox.setName("comboBox" + i);
        jComponentList.add(textField);
        jComponentList.add(comboBox);
    }
    //iterate to get values
    for(JComponent component : jComponentList) {
        if(component instanceof JTextField) {
            System.out.println("textField Name is " + component.getName());
        }
        else if(component instanceof JComboBox) {
            System.out.println("jcomboBox Name is " + component.getName());
        }
    }

【讨论】:

  • 感谢 Aniket 的及时回复!但问题是组件已经添加并且没有给定名称而是变量名称,我必须通过它们的变量名称来获取它们,这样我就不必遍历所有其他组件。意思是在循环中使用变量名访问组件。让我编辑我的问题。
  • 如果变量名是指指向实际对象的引用的名称,则不是很好的编程。请提供您编写的代码。没有人可以仅仅通过阅读问题来帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多