就是这样。我需要创建一个允许选择选项的ButtonGroup,或者,如果用户单击所选选项,则取消选择该项(不会选择任何内容),当然,捕获事件以执行某些操作。
答案 0 :(得分:10)
以防杰夫的链接在未来被破坏,以下是所描述的内容: 你需要继承ButtonGroup以允许不选择,并将你的按钮添加到这个buttongroup。
public class NoneSelectedButtonGroup extends ButtonGroup {
@Override
public void setSelected(ButtonModel model, boolean selected) {
if (selected) {
super.setSelected(model, selected);
} else {
clearSelection();
}
}
}
答案 1 :(得分:5)
答案 2 :(得分:1)
我在未选中的按钮/复选框上执行button.setSelected(false)
时发现了奇怪的行为。它取消选择了所有内容,好像我取消了选择。
我这样解决了:
public class NoneSelectedButtonGroup extends ButtonGroup {
@Override
public void setSelected(ButtonModel model, boolean selected) {
if (selected) {
super.setSelected(model, selected);
} else if (getSelection() != model) {
clearSelection();
}
}
}
答案 3 :(得分:0)
捕获事件以执行某些操作。也可以在下面进行。
@Override
public void actionPerformed(ActionEvent e) {
((JToggleButton)e.getSource()).setSelected(false);
}
修改强> 但是没有涉及ButtonGroup。
答案 4 :(得分:0)
前java 1.6的解决方案
public class NoneSelectedButtonGroup extends ButtonGroup {
private AbstractButton hack;
public NoneSelectedButtonGroup() {
super();
hack = new JButton();
add(hack);
}
@Override
public void setSelected(ButtonModel model, boolean selected) {
super.setSelected(selected ? model : hack.getModel(), true);
}
}