# Class ButtonGroup

java.lang.Object
javax.swing.ButtonGroup

All Implemented Interfaces:
  `Serializable`

public class ButtonGroup extends Object implements Serializable
This class is used to create a multiple-exclusion scope for a set of buttons. Creating a set of buttons with the same `ButtonGroup` object means that turning "on" one of those buttons turns off all other buttons in the group.

A `ButtonGroup` can be used with any set of objects that inherit from `AbstractButton`. Typically a button group contains instances of `JRadioButton`, `JRadioButtonMenuItem`, or `JToggleButton`. It wouldn't make sense to put an instance of `JButton` or `JMenuItem` in a button group because `JButton` and `JMenuItem` don't implement the selected state.

Initially, all buttons in the group are unselected.

For examples and further information on using button groups see How to Use Radio Buttons, a section in The Java Tutorial.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the `java.beans` package. Please see `XMLEncoder`.

Since:
  1.2

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Vector<AbstractButton>`
  `buttons`
  The list of buttons participating in this group.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ButtonGroup()`
  Creates a new `ButtonGroup`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(AbstractButton b)`
  Adds the button to the group.
  `void`
  `clearSelection()`
  Clears the selection such that none of the buttons in the `ButtonGroup` are selected.
  `int`
  `getButtonCount()`
  Returns the number of buttons in the group.
  `Enumeration<AbstractButton>`
  `getElements()`
  Returns all the buttons that are participating in this group.
  `ButtonModel`
  `getSelection()`
  Returns the model of the selected button.
  `boolean`
  `isSelected(ButtonModel m)`
  Returns whether a `ButtonModel` is selected.
  `void`
  `remove(AbstractButton b)`
  Removes the button from the group.
  `void`
  `setSelected(ButtonModel m, boolean b)`
  Sets the selected value for the `ButtonModel`.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### buttons

    protected Vector<AbstractButton> buttons
    The list of buttons participating in this group.

- ## Constructor Details

  - ### ButtonGroup

    public ButtonGroup()
    Creates a new `ButtonGroup`.

- ## Method Details

  - ### add

    public void add(AbstractButton b)
    Adds the button to the group.
    Parameters:
      `b` - the button to be added

  - ### remove

    public void remove(AbstractButton b)
    Removes the button from the group.
    Parameters:
      `b` - the button to be removed

  - ### clearSelection

    public void clearSelection()
    Clears the selection such that none of the buttons in the `ButtonGroup` are selected.
    Since:
      1.6

  - ### getElements

    public Enumeration<AbstractButton> getElements()
    Returns all the buttons that are participating in this group.
    Returns:
      an `Enumeration` of the buttons in this group

  - ### getSelection

    public ButtonModel getSelection()
    Returns the model of the selected button.
    Returns:
      the selected button model

  - ### setSelected

    public void setSelected(ButtonModel m, boolean b)
    Sets the selected value for the `ButtonModel`. Only one button in the group may be selected at a time.
    Parameters:
      `m` - the `ButtonModel`
      `b` - `true` if this button is to be selected, otherwise `false`

  - ### isSelected

    public boolean isSelected(ButtonModel m)
    Returns whether a `ButtonModel` is selected.
    Parameters:
      `m` - an instance of `ButtonModel`
    Returns:
      `true` if the button is selected, otherwise returns `false`

  - ### getButtonCount

    public int getButtonCount()
    Returns the number of buttons in the group.
    Returns:
      the button count
    Since:
      1.3