在Java中有一个可以取消选择所有按钮的按钮组?
我想要一个按钮组,其中只有一个选项被选中,或者它们都不是。目前,我可以让它在默认情况下没有勾选选项,然后如果勾选其中一个选项,则只能勾选其中一个选项,但我也希望能够取消选中的按钮。这可能吗?在Java中有一个可以取消选择所有按钮的按钮组?
编辑:理想情况下,没有一个清晰的所有按钮,因为它会破坏我的GUI的对称性。另外,这里是我的代码至今:
ButtonGroup option = new ButtonGroup();
for(int i = 0; i < n; i++) {
JCheckBox check = new JCheckBox("", false);
option.add(check);
row3b.add(check);
}
此片段演示了如何使用ButtonGroup.clearSelection()
明确的选择:
//The buttons
JFrame frame = new JFrame("Button test");
JPanel panel = new JPanel();
JRadioButton btn1 = new JRadioButton("Button1");
JRadioButton btn2 = new JRadioButton("Button2");
JButton clearbutton = new JButton("Clear");
panel.add(btn1);
panel.add(btn2);
panel.add(clearbutton);
frame.add(panel);
frame.setVisible(true);
frame.pack();
//The Group, make sure only one button is selected at a time in the group
ButtonGroup btngroup = new ButtonGroup();
btngroup.add(btn1);
btngroup.add(btn2);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Do whatever you want here
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Do whatever you want here
}
});
clearbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Clear all selections
btngroup.clearSelection();
}
});
正如你所看到的,这就造成了两个JradioButton将并将它们添加到组,然后让一个按钮,清除选择。真的很简单。或者你可以创建你自己的单选按钮类,允许取消选中按钮,这也相对容易实现。
谢谢,这很有用,我可能会实现,但我不想添加一个清除按钮,因为它会破坏我的GUI的对称性。 – JenniferHL3
@ JenniferHL3,'我可能会实现这一点,但我不想添加一个清晰的按钮 - 然后不。只需将您的代码添加到ActionListener。如果该按钮已被选中,则尝试调用clearSelection()方法。 – camickr
让我们假装你有一个按钮组,它们是单选按钮。
ButtonGroup buttonGroup;
,并已itialized并添加到它的按钮等
Enumeration<AbstractButton> enumeration = buttonGroup.getElements();
while(enumeration.hasMoreElements()){
AbstractButton button = enumeration.next();
button.addActionListener(evt->{
if(button.isSelected()){
buttonGroup.clearSelection();
}
});
}
这样,如果你点击一个选择的按钮就会变成未选中。
一切皆有可能,但请您分享所做的事情的代码? –
我猜你正在使用单选按钮。你有没有考虑过只是增加一个选项'无'。例如。一个按钮将始终被选中,但是他们可以选择不说以上内容。 – matt
将按钮添加到标为“无其他选项”的组中。 –