这是我的问题。让我们说有人在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.
}
}
}
非常感谢提供的任何帮助:)
答案 0 :(得分:2)
您可以在JCheckbox
(继承自AbstractButton
)上致电setSelected()
:
...
o1.setSelected(true); // or false
...
正如@Juvanis所提到的,您应该使用数组来代替o1
,o2
和o3
的三个不同引用。然后,您可以执行类似
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所说,数组可能会很好地工作)并循环它