选中窗口中的所有复选框

时间:2013-03-22 23:52:25

标签: java

我是java的新手,我在窗口上有一些复选框和一个按钮,当我点击此按钮选择窗口中的所有复选框时,我想要。

在C#中我使用了这个:

foreach (Control c in this.Controls) {
    if ((c) is CheckBox) {
        c.Checked = true;
    }
}

如何在Java中执行此操作?

这是我试过的代码

for (Component c : this.getComponents()) {
   if(c instanceof JCheckBox)
       c.setSelected(true);
}

2 个答案:

答案 0 :(得分:1)

最简单的方法是简单地将所有复选框都放在一个集合中(例如List<JCheckBox>),然后迭代列表:

private List<JCheckBox> checkboxesToCheckWhenButtonIsPressed = new ArrayList<JCheckBox>();

public MyPanel() {
    // ... 
    // create the checkboxes, and fill the list of checkboxes
    // create the button
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            for (JCheckBox checkBox : checkboxesToCheckWhenButtonIsPressed) {
                checkbox.setSelected(true);
            }
        }
    }
}

答案 1 :(得分:0)

您尝试过的代码无法编译,因为它需要进行JCheckBox强制转换,以便setSelected方法可用。循环也不会到达任何嵌套容器。为实现此目的,您可以使用递归方法进行for循环调用,首先传递ContentPane的{​​{1}}:

JFrame