DefaultButtonModel (Java Platform SE 8 )
Keywords: javax.swing.DefaultButtonModel class
Date: 2026-03-29

javax.swing

## Class DefaultButtonModel

- java.lang.Object
- - javax.swing.DefaultButtonModel

- All Implemented Interfaces:
    ItemSelectable, Serializable, ButtonModel
  Direct Known Subclasses:
    JToggleButton.ToggleButtonModel

      public class DefaultButtonModel
      extends Object
      implements ButtonModel, Serializable

  The default implementation of a `Button` component's data model.

  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`.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `actionCommand` The action command string fired by the button.
    `static int` | `ARMED` Identifies the "armed" bit in the bitmask, which indicates partial commitment towards choosing/triggering the button.
    `protected ChangeEvent` | `changeEvent` Only one `ChangeEvent` is needed per button model instance since the event's only state is the source property.
    `static int` | `ENABLED` Identifies the "enabled" bit in the bitmask, which indicates that the button can be selected by an input device (such as a mouse pointer).
    `protected ButtonGroup` | `group` The button group that the button belongs to.
    `protected EventListenerList` | `listenerList` Stores the listeners on this model.
    `protected int` | `mnemonic` The button's mnemonic.
    `static int` | `PRESSED` Identifies the "pressed" bit in the bitmask, which indicates that the button is pressed.
    `static int` | `ROLLOVER` Identifies the "rollover" bit in the bitmask, which indicates that the mouse is over the button.
    `static int` | `SELECTED` Identifies the "selected" bit in the bitmask, which indicates that the button has been selected.
    `protected int` | `stateMask` The bitmask used to store the state of the button.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultButtonModel()` Constructs a `DefaultButtonModel`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addActionListener(ActionListener l)` Adds an `ActionListener` to the model.
    `void` | `addChangeListener(ChangeListener l)` Adds a `ChangeListener` to the model.
    `void` | `addItemListener(ItemListener l)` Adds an `ItemListener` to the model.
    `protected void` | `fireActionPerformed(ActionEvent e)` Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireItemStateChanged(ItemEvent e)` Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireStateChanged()` Notifies all listeners that have registered interest for notification on this event type.
    `String` | `getActionCommand()` Returns the action command string for the button.
    `ActionListener[]` | `getActionListeners()` Returns an array of all the action listeners registered on this `DefaultButtonModel`.
    `ChangeListener[]` | `getChangeListeners()` Returns an array of all the change listeners registered on this `DefaultButtonModel`.
    `ButtonGroup` | `getGroup()` Returns the group that the button belongs to.
    `ItemListener[]` | `getItemListeners()` Returns an array of all the item listeners registered on this `DefaultButtonModel`.
    `<T extends EventListener> T[]` | `getListeners(Class<T> listenerType)` Returns an array of all the objects currently registered as `FooListener`s upon this model.
    `int` | `getMnemonic()` Gets the keyboard mnemonic for the button.
    `Object[]` | `getSelectedObjects()` Overridden to return `null`.
    `boolean` | `isArmed()` Indicates partial commitment towards triggering the button.
    `boolean` | `isEnabled()` Indicates if the button can be selected or triggered by an input device, such as a mouse pointer.
    `boolean` | `isPressed()` Indicates if the button is pressed.
    `boolean` | `isRollover()` Indicates that the mouse is over the button.
    `boolean` | `isSelected()` Indicates if the button has been selected.
    `void` | `removeActionListener(ActionListener l)` Removes an `ActionListener` from the model.
    `void` | `removeChangeListener(ChangeListener l)` Removes a `ChangeListener` from the model.
    `void` | `removeItemListener(ItemListener l)` Removes an `ItemListener` from the model.
    `void` | `setActionCommand(String actionCommand)` Sets the action command string that gets sent as part of the `ActionEvent` when the button is triggered.
    `void` | `setArmed(boolean b)` Marks the button as armed or unarmed.
    `void` | `setEnabled(boolean b)` Enables or disables the button.
    `void` | `setGroup(ButtonGroup group)` Identifies the group the button belongs to -- needed for radio buttons, which are mutually exclusive within their group.
    `void` | `setMnemonic(int key)` Sets the keyboard mnemonic (shortcut key or accelerator key) for the button.
    `void` | `setPressed(boolean b)` Sets the button to pressed or unpressed.
    `void` | `setRollover(boolean b)` Sets or clears the button's rollover state
    `void` | `setSelected(boolean b)` Selects or deselects the button.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### stateMask

          protected int stateMask

      The bitmask used to store the state of the button.

    - #### actionCommand

          protected String actionCommand

      The action command string fired by the button.

    - #### group

          protected ButtonGroup group

      The button group that the button belongs to.

    - #### mnemonic

          protected int mnemonic

      The button's mnemonic.

    - #### changeEvent

          protected transient ChangeEvent changeEvent

      Only one `ChangeEvent` is needed per button model instance since the event's only state is the source property. The source of events generated is always "this".

    - #### listenerList

          protected EventListenerList listenerList

      Stores the listeners on this model.

    - #### ARMED

          public static final int ARMED

      Identifies the "armed" bit in the bitmask, which indicates partial commitment towards choosing/triggering the button.
      See Also:
        Constant Field Values

    - #### SELECTED

          public static final int SELECTED

      Identifies the "selected" bit in the bitmask, which indicates that the button has been selected. Only needed for certain types of buttons - such as radio button or check box.
      See Also:
        Constant Field Values

    - #### PRESSED

          public static final int PRESSED

      Identifies the "pressed" bit in the bitmask, which indicates that the button is pressed.
      See Also:
        Constant Field Values

    - #### ENABLED

          public static final int ENABLED

      Identifies the "enabled" bit in the bitmask, which indicates that the button can be selected by an input device (such as a mouse pointer).
      See Also:
        Constant Field Values

    - #### ROLLOVER

          public static final int ROLLOVER

      Identifies the "rollover" bit in the bitmask, which indicates that the mouse is over the button.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### DefaultButtonModel

          public DefaultButtonModel()

      Constructs a `DefaultButtonModel`.

  - ### Method Detail

    - #### setActionCommand

          public void setActionCommand(String actionCommand)

      Sets the action command string that gets sent as part of the `ActionEvent` when the button is triggered.
      Specified by:
        `setActionCommand` in interface `ButtonModel`
      Parameters:
        `actionCommand` - the `String` that identifies the generated event
      See Also:
        `ButtonModel.getActionCommand()`, `ActionEvent.getActionCommand()`

    - #### getActionCommand

          public String getActionCommand()

      Returns the action command string for the button.
      Specified by:
        `getActionCommand` in interface `ButtonModel`
      Returns:
        the `String` that identifies the generated event
      See Also:
        `ButtonModel.setActionCommand(java.lang.String)`

    - #### isArmed

          public boolean isArmed()

      Indicates partial commitment towards triggering the button.
      Specified by:
        `isArmed` in interface `ButtonModel`
      Returns:
        `true` if the button is armed, and ready to be triggered
      See Also:
        `ButtonModel.setArmed(boolean)`

    - #### isSelected

          public boolean isSelected()

      Indicates if the button has been selected. Only needed for certain types of buttons - such as radio buttons and check boxes.
      Specified by:
        `isSelected` in interface `ButtonModel`
      Returns:
        `true` if the button is selected

    - #### isEnabled

          public boolean isEnabled()

      Indicates if the button can be selected or triggered by an input device, such as a mouse pointer.
      Specified by:
        `isEnabled` in interface `ButtonModel`
      Returns:
        `true` if the button is enabled

    - #### isPressed

          public boolean isPressed()

      Indicates if the button is pressed.
      Specified by:
        `isPressed` in interface `ButtonModel`
      Returns:
        `true` if the button is pressed

    - #### isRollover

          public boolean isRollover()

      Indicates that the mouse is over the button.
      Specified by:
        `isRollover` in interface `ButtonModel`
      Returns:
        `true` if the mouse is over the button

    - #### setArmed

          public void setArmed(boolean b)

      Marks the button as armed or unarmed.
      Specified by:
        `setArmed` in interface `ButtonModel`
      Parameters:
        `b` - whether or not the button should be armed

    - #### setEnabled

          public void setEnabled(boolean b)

      Enables or disables the button.
      Specified by:
        `setEnabled` in interface `ButtonModel`
      Parameters:
        `b` - whether or not the button should be enabled
      See Also:
        `ButtonModel.isEnabled()`

    - #### setSelected

          public void setSelected(boolean b)

      Selects or deselects the button.
      Specified by:
        `setSelected` in interface `ButtonModel`
      Parameters:
        `b` - `true` selects the button, `false` deselects the button

    - #### setPressed

          public void setPressed(boolean b)

      Sets the button to pressed or unpressed.
      Specified by:
        `setPressed` in interface `ButtonModel`
      Parameters:
        `b` - whether or not the button should be pressed
      See Also:
        `ButtonModel.isPressed()`

    - #### setRollover

          public void setRollover(boolean b)

      Sets or clears the button's rollover state
      Specified by:
        `setRollover` in interface `ButtonModel`
      Parameters:
        `b` - whether or not the button is in the rollover state
      See Also:
        `ButtonModel.isRollover()`

    - #### setMnemonic

          public void setMnemonic(int key)

      Sets the keyboard mnemonic (shortcut key or accelerator key) for the button.
      Specified by:
        `setMnemonic` in interface `ButtonModel`
      Parameters:
        `key` - an int specifying the accelerator key

    - #### getMnemonic

          public int getMnemonic()

      Gets the keyboard mnemonic for the button.
      Specified by:
        `getMnemonic` in interface `ButtonModel`
      Returns:
        an int specifying the accelerator key
      See Also:
        `ButtonModel.setMnemonic(int)`

    - #### addChangeListener

          public void addChangeListener(ChangeListener l)

      Adds a `ChangeListener` to the model.
      Specified by:
        `addChangeListener` in interface `ButtonModel`
      Parameters:
        `l` - the listener to add

    - #### removeChangeListener

          public void removeChangeListener(ChangeListener l)

      Removes a `ChangeListener` from the model.
      Specified by:
        `removeChangeListener` in interface `ButtonModel`
      Parameters:
        `l` - the listener to remove

    - #### getChangeListeners

          public ChangeListener[] getChangeListeners()

      Returns an array of all the change listeners registered on this `DefaultButtonModel`.
      Returns:
        all of this model's `ChangeListener`s or an empty array if no change listeners are currently registered
      Since:
        1.4
      See Also:
        `addChangeListener(javax.swing.event.ChangeListener)`, `removeChangeListener(javax.swing.event.ChangeListener)`

    - #### fireStateChanged

          protected void fireStateChanged()

      Notifies all listeners that have registered interest for notification on this event type. The event instance is created lazily.
      See Also:
        `EventListenerList`

    - #### addActionListener

          public void addActionListener(ActionListener l)

      Adds an `ActionListener` to the model.
      Specified by:
        `addActionListener` in interface `ButtonModel`
      Parameters:
        `l` - the listener to add

    - #### removeActionListener

          public void removeActionListener(ActionListener l)

      Removes an `ActionListener` from the model.
      Specified by:
        `removeActionListener` in interface `ButtonModel`
      Parameters:
        `l` - the listener to remove

    - #### getActionListeners

          public ActionListener[] getActionListeners()

      Returns an array of all the action listeners registered on this `DefaultButtonModel`.
      Returns:
        all of this model's `ActionListener`s or an empty array if no action listeners are currently registered
      Since:
        1.4
      See Also:
        `addActionListener(java.awt.event.ActionListener)`, `removeActionListener(java.awt.event.ActionListener)`

    - #### fireActionPerformed

          protected void fireActionPerformed(ActionEvent e)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `e` - the `ActionEvent` to deliver to listeners
      See Also:
        `EventListenerList`

    - #### addItemListener

          public void addItemListener(ItemListener l)

      Adds an `ItemListener` to the model.
      Specified by:
        `addItemListener` in interface `ItemSelectable`
      Specified by:
        `addItemListener` in interface `ButtonModel`
      Parameters:
        `l` - the listener to add
      See Also:
        `ItemEvent`

    - #### removeItemListener

          public void removeItemListener(ItemListener l)

      Removes an `ItemListener` from the model.
      Specified by:
        `removeItemListener` in interface `ItemSelectable`
      Specified by:
        `removeItemListener` in interface `ButtonModel`
      Parameters:
        `l` - the listener to remove
      See Also:
        `ItemEvent`

    - #### getItemListeners

          public ItemListener[] getItemListeners()

      Returns an array of all the item listeners registered on this `DefaultButtonModel`.
      Returns:
        all of this model's `ItemListener`s or an empty array if no item listeners are currently registered
      Since:
        1.4
      See Also:
        `addItemListener(java.awt.event.ItemListener)`, `removeItemListener(java.awt.event.ItemListener)`

    - #### fireItemStateChanged

          protected void fireItemStateChanged(ItemEvent e)

      Notifies all listeners that have registered interest for notification on this event type.
      Parameters:
        `e` - the `ItemEvent` to deliver to listeners
      See Also:
        `EventListenerList`

    - #### getListeners

          public <T extends EventListener> T[] getListeners(Class<T> listenerType)

      Returns an array of all the objects currently registered as `FooListener`s upon this model. `FooListener`s are registered using the `addFooListener` method.

      You can specify the `listenerType` argument with a class literal, such as `FooListener.class`. For example, you can query a `DefaultButtonModel` instance `m` for its action listeners with the following code:

          ActionListener[] als = (ActionListener[])(m.getListeners(ActionListener.class));

      If no such listeners exist, this method returns an empty array.
      Parameters:
        `listenerType` - the type of listeners requested; this parameter should specify an interface that descends from `java.util.EventListener`
      Returns:
        an array of all objects registered as `FooListener`s on this model, or an empty array if no such listeners have been added
      Throws:
        `ClassCastException` - if `listenerType` doesn't specify a class or interface that implements `java.util.EventListener`
      Since:
        1.3
      See Also:
        `getActionListeners()`, `getChangeListeners()`, `getItemListeners()`

    - #### getSelectedObjects

          public Object[] getSelectedObjects()

      Overridden to return `null`.
      Specified by:
        `getSelectedObjects` in interface `ItemSelectable`

    - #### setGroup

          public void setGroup(ButtonGroup group)

      Identifies the group the button belongs to -- needed for radio buttons, which are mutually exclusive within their group.
      Specified by:
        `setGroup` in interface `ButtonModel`
      Parameters:
        `group` - the `ButtonGroup` the button belongs to

    - #### getGroup

          public ButtonGroup getGroup()

      Returns the group that the button belongs to. Normally used with radio buttons, which are mutually exclusive within their group.
      Returns:
        the `ButtonGroup` that the button belongs to
      Since:
        1.3

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.