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