如何从一个按钮检查程序(或复选框)中的(标记为已选中)按钮?

时间:2013-06-24 14:28:30

标签: java swing jcheckbox itemlistener

这是我的问题。让我们说有人在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.
        }
   }
 }

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

3 个答案:

答案 0 :(得分:2)

您可以在JCheckbox(继承自AbstractButton)上致电setSelected()

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

正如@Juvanis所提到的,您应该使用数组来代替o1o2o3的三个不同引用。然后,您可以执行类似

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

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

答案 1 :(得分:2)

利用数组的概念。

JCheckBox[] checkboxes = new JCheckBox[10];

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

for( JCheckbox cb : checkboxes )
   cb.doStuff();

答案 2 :(得分:2)

CheckBoxes可以有ActionListeners。为什么不向所有复选框添加一个ActionListener,然后检查选中的复选框是否被选中,并在每个复选框上调用setSelected(true)setSelected(false)

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