而已。我需要创建一个 ButtonGroup 以允许选择一个选项,或者,如果用户单击所选选项,则取消选择该项目(不会选择任何内容),当然,捕获事件以执行某些操作。
问问题
7797 次
5 回答
12
以防万一 Jeff 的链接在将来被破坏,这里是描述的:你需要继承 ButtonGroup 以允许无选择,并将你的按钮添加到这个按钮组。
public class NoneSelectedButtonGroup extends ButtonGroup {
@Override
public void setSelected(ButtonModel model, boolean selected) {
if (selected) {
super.setSelected(model, selected);
} else {
clearSelection();
}
}
}
于 2013-05-24T09:34:41.640 回答
5
这准确地显示了如何做到这一点https://dzone.com/articles/unselect-all-toggle-buttons
于 2011-02-05T01:26:51.520 回答
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();
}
}
}
于 2014-03-06T14:35:18.990 回答
0
pre 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);
}
}
于 2014-03-02T16:20:23.353 回答
0
捕获事件以做某事。还请执行以下操作。
@Override
public void actionPerformed(ActionEvent e) {
((JToggleButton)e.getSource()).setSelected(false);
}
编辑: 但是没有涉及到 ButtonGroup。
于 2013-06-02T03:20:31.533 回答