3

虽然,每个AbstractButton都可以添加到ButtonGroup(根据Java API),但我想问一下,添加哪些元素真正有意义。

以下两个肯定可以:

  • JRadioButton
  • JRadioButtonMenuItem

我想知道:

  • JCheckBox<- 与 一样JRadioButton,继承自JToggleButton
  • 任何其他AbstractButton
4

2 回答 2

3

ButtonGroup用于为一组按钮创建多重排除范围。使用相同的对象创建一组按钮ButtonGroup意味着“打开”其中一个按钮会关闭组中的所有其他按钮。

AButtonGroup可以与继承自 的任何对象集一起使用AbstractButton。通常 aButtonGroup包含JRadioButton、 JRadioButtonMenuItem 或的实例JToggleButton。将JButtonor的实例JMenuItem放在 a 中ButtonGroup并且JButtonJMenuItem实现选定状态是没有意义的。

最初,未选择组中的所有按钮。选择任何按钮后,始终会在组中选择一个按钮。无法以编程方式将按钮设置为“关闭”,以清除按钮组。要呈现“未选择”的外观,JRadioButton请在组中添加一个不可见的,然后以编程方式选择该按钮以关闭所有显示的JRadioButtons. 例如,可以连线带有标签“none”的普通按钮来选择不可见的JRadioButton.

有关使用的示例和更多信息,ButtonGroups 请参阅 The Java Tutorial 中的 How to UseJRadioButtons部分。

于 2012-05-25T07:21:23.377 回答
2

除了上面的答案之外-还有一种方法可以创建 ButtonGroup 以允许清除组中的选择(不会选择任何组按钮时的状态)而无需任何其他代码-只需扩展 ButtonGroup 并覆盖 setSelected 方法这样:

public void setSelected ( ButtonModel model, boolean selected )
{
    if ( selected || !unselectable )
    {
        super.setSelected ( model, selected );
    }
    else
    {
        clearSelection ();
    }
}

这将允许按钮被取消选中。

于 2012-05-25T07:34:46.710 回答