虽然每个AbstractButton
都可以添加到ButtonGroup
(根据Java API),但我想问一下,添加哪些元素真的很有意义。
以下两个肯定会这样做:
JRadioButton
JRadioButtonMenuItem
我想知道:
JCheckBox
< - 与JRadioButton
一样,继承自JToggleButton
AbstractButton
答案 0 :(得分:3)
ButtonGroup
用于为一组按钮创建多重排除范围。创建一组具有相同ButtonGroup
对象的按钮意味着打开其中一个按钮将关闭该组中的所有其他按钮。
ButtonGroup
可以与从AbstractButton
继承的任何对象集一起使用。通常,ButtonGroup
包含JRadioButton
,JRadioButtonMenuItem或JToggleButton
的实例。将JButton
或JMenuItem
的实例放在ButtonGroup
中是没有意义的,因为JButton
和JMenuItem
未实现所选状态。< / p>
最初,组中的所有按钮都是未选中的。选择任何按钮后,组中始终会选择一个按钮。无法以编程方式将按钮设置为“关闭”,以清除按钮组。要显示“未选中”的外观,请向该组添加一个不可见的JRadioButton
,然后以编程方式选择该按钮以关闭所有显示的JRadioButtons
。例如,可以连接标签为“none”的普通按钮来选择不可见的JRadioButton
。
有关使用ButtonGroups
see How to Use JRadioButtons
的示例和更多信息,请参阅The Java Tutorial中的一节。
答案 1 :(得分:2)
除了上面的答案之外 - 还有一种方法,创建ButtonGroup,允许清除组中的选择(没有选择任何组按钮时的状态),而不需要任何其他代码 - 只需扩展ButtonGroup并覆盖setSelected像这样的方法:
public void setSelected ( ButtonModel model, boolean selected )
{
if ( selected || !unselectable )
{
super.setSelected ( model, selected );
}
else
{
clearSelection ();
}
}
这将允许按钮被取消选择。