4

这是我的问题。假设有人在java中制作了一个复选框,他在GUI界面中使用它,以便用户可以选择各种选项。然后程序员想要在复选框内创建一个按钮,以便当用户检查该按钮,所有其他选项也将被检查。当他取消选中该按钮时,当然所有其他按钮都将被取消选中。这在 java 中怎么可能?

例子 :

o1 = new JCheckBox("Option 1");
o2 = new JCheckBox("Option 2");
o3 = new JCheckBox("Option 3");
All = new JCheckBox("All");

......

CheckBoxHandler listener = new CheckBoxHandler();
All.addItemListener(listener);

……

让我们假设以下代码在一个类上,该类是在实现 ItemListener 时创建的

public class CheckBoxHandler implements ItemListener
{
 public void itemStateChanged(ItemEvent e)
  {
    if (e.getSource()==All)
      if (e.getStateChange()==ItemEvent.SELECTED)
        {
          .... <------ (!!!)Here inside I am currently stack and I do not know how to 
          add the correct code in order to have all the other buttons checked.
        }
   }
 }

非常感谢提供的任何帮助:)

4

3 回答 3

2

利用数组的概念。

JCheckBox[] checkboxes = new JCheckBox[10];

当您需要对所有复选框应用一些操作时,遍历数组:

for( JCheckbox cb : checkboxes )
   cb.doStuff();
于 2013-06-24T14:34:52.943 回答
2

CheckBoxes 可以有 ActionListeners。为什么不将 ActionListener 添加到所有复选框,然后检查所选的复选框是否被选中并调用setSelected(true)or setSelected(false)

如果您有少量已知的复选框(例如您谈到的 3 个),您可能只想对其进行硬编码。但是,如果您需要使其模块化或拥有大量复选框,您始终可以将它们存储在数据结构中(正如 Juvanis 所说,数组可能会很好地工作)并循环它

于 2013-06-24T14:35:36.163 回答
2

您可以调用setSelected()JCheckbox继承自AbstractButton):

...
o1.setSelected(true); // or false
...

正如@Juvanis 所提到的,您应该使用一个数组,而不是为o1,o2和提供三个不同的引用。o3然后,你可以做类似的事情

for( JCheckbox cb : checkboxes ) {
    cb.setSelected(true);
}

将数组中的所有复选框设置为已选中。

于 2013-06-24T14:34:19.697 回答