Java 如何创建允许取消选择实际选项的JToggleButton的ButtonGroup?
就这样。我需要创建一个按钮组,允许用户选择一个选项,或者,如果用户单击所选选项,取消选择该项目,则不会选择任何内容,当然,还需要捕获事件以执行某些操作。这正好说明了如何执行该操作,以防Jeff的链接在将来断开,下面介绍: 您需要子类化ButtonGroup以允许无选择,并将您的按钮添加到此ButtonGroupJava 如何创建允许取消选择实际选项的JToggleButton的ButtonGroup?,java,swing,buttongroup,Java,Swing,Buttongroup,就这样。我需要创建一个按钮组,允许用户选择一个选项,或者,如果用户单击所选选项,取消选择该项目,则不会选择任何内容,当然,还需要捕获事件以执行某些操作。这正好说明了如何执行该操作,以防Jeff的链接在将来断开,下面介绍: 您需要子类化ButtonGroup以允许无选择,并将您的按钮添加到此ButtonGroup public class NoneSelectedButtonGroup extends ButtonGroup { @Override public void setSele
public class NoneSelectedButtonGroup extends ButtonGroup {
@Override
public void setSelected(ButtonModel model, boolean selected) {
if (selected) {
super.setSelected(model, selected);
} else {
clearSelection();
}
}
}
捕获事件以执行某些操作。也请执行以下操作
@Override
public void actionPerformed(ActionEvent e) {
((JToggleButton)e.getSource()).setSelected(false);
}
编辑:
但是不涉及按钮组。针对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);
}
}
在未选中的按钮/复选框上执行button.setSelectedfalse时,我注意到了奇怪的行为。它取消了所有的选择,就好像我取消了选择一样 我这样做: 公共类NoneSelectedButtonGroup扩展ButtonGroup{ @凌驾 public void setSelectedButtonModel模型,已选择布尔值{ 如果选择{ super.setSelectedmodel,选中; }否则,如果getSelection!=模型{ 选举; } } }
这对用户来说可能不是直观的。您是否考虑过制作一个选项来表示与取消选择相对应的状态/选择?或者一个匿名内部类就足够了,例如,ButtonGroup myGroup=new ButtonGroup{/*上面的代码*/}@MarkJeronimus对此进行了改进,以避免清除未选中的按钮/复选框上的选择调用按钮。setSelectedfalse。