Download the JDK
Search the Tutorials
Hide the TOC
Trail: Creating a GUI with JFC/Swing
Lesson: Using Swing Components
Section: How to Use Various Components
Using Swing Components
Using Top-Level Containers
The JComponent Class
Using Text Components
Text Component Features
The Text Component API
How to Use Various Components
How to Make Applets
How to Use Buttons, Check Boxes, and Radio Buttons
How to Use the ButtonGroup Component
How to Use Color Choosers
How to Use Combo Boxes
How to Make Dialogs
How to Use Editor Panes and Text Panes
How to Use File Choosers
How to Use Formatted Text Fields
How to Make Frames (Main Windows)
How to Use Internal Frames
How to Use Labels
How to Use Layered Panes
How to Use Lists
How to Use Menus
How to Use Panels
How to Use Password Fields
How to Use Progress Bars
How to Use Root Panes
How to Use Scroll Panes
How to Use Separators
How to Use Sliders
How to Use Spinners
How to Use Split Panes
How to Use Tabbed Panes
How to Use Tables
How to Use Text Areas
How to Use Text Fields
How to Use Tool Bars
How to Use Tool Tips
How to Use Trees
How to Use HTML in Swing Components
How to Use Models
How to Use Icons
How to Use Borders
Solving Common Component Problems
Home Page > Creating a GUI with JFC/Swing > Using Swing Components
How to Use the ButtonGroup Component

> The `ButtonGroup` component manages the selected/unselected state for a set of buttons. For the group, the `ButtonGroup` instance guarantees that only one button can be selected at a time.

> Initially, all buttons managed by a `ButtonGroup` instance are unselected.

> ### How to Use ButtonGroup Features

> You can use `ButtonGroup` with any set of objects that inherit from `AbstractButton`. Typically a button group contains instances of `JRadioButton, JRadioButtonMenuItem`, or `JToggleButton`. It would not make sense to put an instance of `JButton` or `JMenuItem` in a button group because `JButton` and `JMenuItem` do not implement the select/deselect button state.

> In general, you will typically follow these steps to write code that uses a `ButtonGroup` component.
> 1. Subclass `JFrame`
> 2. Call `ContextPane` together with a layout manager
> 3. Declare and configure a set of radio buttons or toggle buttons
> 4. Instantiate a `ButtonGroup` object
> 5. Call the `add` method on that buttongroup object in order to add each button to the group.

> For details and a code example, see How to Use Radio Buttons. It shows how to use a `ButtonGroup` component to group a set of RadioButtons set into a JPanel.

> ### The ButtonGroup API

> Commonly Used Button Group Constructors/Methods
> Constructor or Method | Purpose
> --- | ---
> ButtonGroup() | Create a `ButtonGroup` instance.
> void add(AbstractButton) void remove(AbstractButton) | Add a button to the group, or remove a button from the group.
> public ButtonGroup getGroup() (in `DefaultButtonModel`) | Get the `ButtonGroup`, if any, that controls a button. For example: `ButtonGroup group = ((DefaultButtonModel)button.getModel()).getGroup();`
> public ButtonGroup clearSelection() | Clears the state of selected buttons in the ButtonGroup. None of the buttons in the ButtonGroup are selected .

> ### ButtonGroup Examples

> The following demonstration application uses the ButtonGroup component to group radio buttons displaying on a Window.

> Example | Where Described | Notes
> --- | --- | ---
> `RadioButtonDemo` | How to Use Radio Buttons | Uses radio buttons to determine which of five images it should display.

Previous page: How to Use Buttons, Check Boxes, and Radio Buttons
Next page: How to Use Color Choosers