-1

我是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);
}
4

2 回答 2

1

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

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);
            }
        }
    }
}
于 2013-03-23T00:01:26.827 回答
0

您尝试的代码将无法编译,因为它需要进行JCheckBox强制转换才能使该setSelected方法可用。此外,循环不会到达任何嵌套容器。为此,您可以使用递归方法进行循环调用,for首先传入ContentPane:JFrame

void checkAllCheckBoxes(Container container) {

   for (Component c: container.getComponents()) {
      if (c instanceof Container) {
         checkAllCheckBoxes((Container)c);
      } 

      if (c instanceof JCheckBox) {
         ((JCheckBox) c).setSelected(true);
      } 
   }
}
于 2013-03-23T00:46:41.610 回答