# 如何使用 ButtonGroup 组件

> 原文： [https://docs.oracle.com/javase/tutorial/uiswing/components/buttongroup.html](https://docs.oracle.com/javase/tutorial/uiswing/components/buttongroup.html)

`ButtonGroup`组件管理一组按钮的选定/未选定状态。对于组，`ButtonGroup`实例保证一次只能选择一个按钮。

最初，未选择由`ButtonGroup`实例管理的所有按钮。

## 如何使用 ButtonGroup 功能

您可以将`ButtonGroup`用于从`AbstractButton`继承的任何对象集。通常，按钮组包含`JRadioButton, JRadioButtonMenuItem`或`JToggleButton`的实例。将`JButton`或`JMenuItem`的实例放在按钮组中是没有意义的，因为`JButton`和`JMenuItem`没有实现选择/取消选择按钮状态。

通常，您通常会按照以下步骤编写使用`ButtonGroup`组件的代码。

1.  子类`JFrame`
2.  与布局管理器一起调用`ContextPane`
3.  声明并配置一组单选按钮或切换按钮
4.  实例化`ButtonGroup`对象
5.  在该 buttongroup 对象上调用`add`方法，以便将每个按钮添加到该组。

有关详细信息和代码示例，请参阅[如何使用单选按钮](button.html#radiobutton)。它显示了如何使用`ButtonGroup`组件将一组 RadioButtons 分组到 JPanel 中。

## ButtonGroup API


| 构造函数或方法 | 目的 |
| --- | --- |
| [ButtonGroup（）](https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html#ButtonGroup--) | 创建`ButtonGroup`实例。 |
| [void add（AbstractButton）](https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html#add-javax.swing.AbstractButton-)
[void remove（AbstractButton）](https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html#remove-javax.swing.AbstractButton-) | 向组中添加按钮，或从组中删除按钮。 |
| [public ButtonGroup getGroup（）](https://docs.oracle.com/javase/8/docs/api/javax/swing/DefaultButtonModel.html#getGroup--)
_（在`DefaultButtonModel`中）_ | 获取控制按钮的`ButtonGroup`（如果有）。例如：
`ButtonGroup group = ((DefaultButtonModel)button.getModel()).getGroup();` |
| [public ButtonGroup clearSelection（）](https://docs.oracle.com/javase/8/docs/api/javax/swing/ButtonGroup.html#ButtonGroup--) | 清除 ButtonGroup 中所选按钮的状态。 ButtonGroup 中没有任何按钮被选中。 |

## ButtonGroup 示例

以下演示应用程序使用 ButtonGroup 组件对窗口上显示的单选按钮进行分组。

| 例 | 在哪里描述 | 笔记 |
| :-- | :-- | :-- |
| [`RadioButtonDemo`](../examples/components/index.html#RadioButtonDemo) | [如何使用单选按钮](button.html#radiobutton) | 使用单选按钮确定应显示的五个图像中的哪一个。 |