选择按钮切换代码
在夏天,因为我听到越来越多的海浪声而不是键盘打字声,所以我为您提供了快速的技巧,而不是详尽的文章。
这次是关于Swing。 我正在为宠物项目做Swing ... 而且我更像一个网络人。 因此,我总是把头靠在墙上,试图克服那些对Swing更有经验的人根本找不到问题。 很好,因为它教会了我另一种思考方式(作为一名Web开发人员,我并不是很基于事件,但是Vaadin之类的框架或CDI之类的标准正在使它发生变化)。
也就是说,我的最新问题如下。 在大多数情况下,切换按钮是单选按钮:您可以在屏幕显示之前以编程方式选择一个无线电,并且由于所有无线电都在同一个ButtonGroup中,因此当用户选择一个时,它会取消选择先前选择的一个。 很好,但是如果我的默认状态是不选择任何收音机怎么办?
实际上,始终选择无线电意味着默认状态应像其他无线电一样显示为无线电。 在我的项目中,我希望默认状态是未选择任何无线电,但是要保持经典的行为,即选择无线电意味着先取消选择无线电。 使用Swing默认类,即使您将单选按钮替换为切换按钮,它也不起作用:选择一个后,它保持选中状态。 查看ButtonGroup
代码,可以了解原因:
publicvoidsetSelected(ButtonModelm,booleanb){
if(b&&m!=null&&m!=selection){
ButtonModeloldSelection=selection;
selection=m;
if(oldSelection!=null){
oldSelection.setSelected(false);
}
m.setSelected(true);
}
}
经典的ButtonGroup
仅在状态从未选中变为选中时管理! 使用单选按钮时,这很酷,而使用切换按钮则不然。
为了在您的组中可能没有选定的按钮,请使用以下类代替ButtonGroup
:
publicclassNoneSelectedButtonGroupextendsButtonGroup{
@Override
publicvoidsetSelected(ButtonModelmodel,booleanselected){
if(selected){
super.setSelected(model,selected);
}else{
clearSelection();
}
}
}
clearSelection()仅从Java 6开始可用
翻译自: https://blog.frankel.ch/unselect-all-toggle-buttons-of-a-group/
选择按钮切换代码