javax.swing

## Class AbstractButton

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.AbstractButton

- All Implemented Interfaces:
    ImageObserver, ItemSelectable, MenuContainer, Serializable, SwingConstants
  Direct Known Subclasses:
    JButton, JMenuItem, JToggleButton

      public abstract class AbstractButton
      extends JComponent
      implements ItemSelectable, SwingConstants

  Defines common behaviors for buttons and menu items.

  Buttons can be configured, and to some degree controlled, by `Action`s. Using an `Action` with a button has many benefits beyond directly configuring a button. Refer to Swing Components Supporting `Action` for more details, and you can find more information in How to Use Actions, a section in The Java Tutorial.

  For further information see How to Use Buttons, Check Boxes, and 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`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `AbstractButton.AccessibleAbstractButton` | This class implements accessibility support for the `AbstractButton` class.
    `protected class` | `AbstractButton.ButtonChangeListener` | Extends `ChangeListener` to be serializable.

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected ActionListener` | `actionListener` | The button model's `ActionListener`.
    `static String` | `BORDER_PAINTED_CHANGED_PROPERTY` | Identifies a change to having the border drawn, or having it not drawn.
    `protected ChangeEvent` | `changeEvent` | Only one `ChangeEvent` is needed per button instance since the event's only state is the source property.
    `protected ChangeListener` | `changeListener` | The button model's `changeListener`.
    `static String` | `CONTENT_AREA_FILLED_CHANGED_PROPERTY` | Identifies a change to having the button paint the content area.
    `static String` | `DISABLED_ICON_CHANGED_PROPERTY` | Identifies a change to the icon used when the button has been disabled.
    `static String` | `DISABLED_SELECTED_ICON_CHANGED_PROPERTY` | Identifies a change to the icon used when the button has been disabled and selected.
    `static String` | `FOCUS_PAINTED_CHANGED_PROPERTY` | Identifies a change to having the border highlighted when focused, or not.
    `static String` | `HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY` | Identifies a change in the button's horizontal alignment.
    `static String` | `HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY` | Identifies a change in the button's horizontal text position.
    `static String` | `ICON_CHANGED_PROPERTY` | Identifies a change to the icon that represents the button.
    `protected ItemListener` | `itemListener` | The button model's `ItemListener`.
    `static String` | `MARGIN_CHANGED_PROPERTY` | Identifies a change in the button's margins.
    `static String` | `MNEMONIC_CHANGED_PROPERTY` | Identifies a change to the button's mnemonic.
    `protected ButtonModel` | `model` | The data model that determines the button's state.
    `static String` | `MODEL_CHANGED_PROPERTY` | Identifies a change in the button model.
    `static String` | `PRESSED_ICON_CHANGED_PROPERTY` | Identifies a change to the icon used when the button has been pressed.
    `static String` | `ROLLOVER_ENABLED_CHANGED_PROPERTY` | Identifies a change from rollover enabled to disabled or back to enabled.
    `static String` | `ROLLOVER_ICON_CHANGED_PROPERTY` | Identifies a change to the icon used when the cursor is over the button.
    `static String` | `ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY` | Identifies a change to the icon used when the cursor is over the button and it has been selected.
    `static String` | `SELECTED_ICON_CHANGED_PROPERTY` | Identifies a change to the icon used when the button has been selected.
    `static String` | `TEXT_CHANGED_PROPERTY` | Identifies a change in the button's text.
    `static String` | `VERTICAL_ALIGNMENT_CHANGED_PROPERTY` | Identifies a change in the button's vertical alignment.
    `static String` | `VERTICAL_TEXT_POSITION_CHANGED_PROPERTY` | Identifies a change in the button's vertical text position.

    - ### Fields inherited from class javax.swing.JComponent

      `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

    - ### Fields inherited from class java.awt.Component

      `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface javax.swing.SwingConstants

      `BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractButton()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `actionPropertyChanged(Action action, String propertyName)` | Updates the button's state in response to property changes in the associated action.
    `void` | `addActionListener(ActionListener l)` | Adds an `ActionListener` to the button.
    `void` | `addChangeListener(ChangeListener l)` | Adds a `ChangeListener` to the button.
    `protected void` | `addImpl(Component comp, Object constraints, int index)` | Adds the specified component to this container at the specified index, refer to `Container.addImpl(Component, Object, int)` for a complete description of this method.
    `void` | `addItemListener(ItemListener l)` | Adds an `ItemListener` to the `checkbox`.
    `protected int` | `checkHorizontalKey(int key, String exception)` | Verify that the `key` argument is a legal value for the `horizontalAlignment` and `horizontalTextPosition` properties.
    `protected int` | `checkVerticalKey(int key, String exception)` | Verify that the `key` argument is a legal value for the vertical properties.
    `protected void` | `configurePropertiesFromAction(Action a)` | Sets the properties on this button to match those in the specified `Action`.
    `protected ActionListener` | `createActionListener()` |
    `protected PropertyChangeListener` | `createActionPropertyChangeListener(Action a)` | Creates and returns a `PropertyChangeListener` that is responsible for listening for changes from the specified `Action` and updating the appropriate properties.
    `protected ChangeListener` | `createChangeListener()` | Subclasses that want to handle `ChangeEvents` differently can override this to return another `ChangeListener` implementation.
    `protected ItemListener` | `createItemListener()` |
    `void` | `doClick()` | Programmatically perform a "click".
    `void` | `doClick(int pressTime)` | Programmatically perform a "click".
    `protected void` | `fireActionPerformed(ActionEvent event)` | Notifies all listeners that have registered interest for notification on this event type.
    `protected void` | `fireItemStateChanged(ItemEvent event)` | 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.
    `Action` | `getAction()` | Returns the currently set `Action` for this `ActionEvent` source, or `null` if no `Action` is set.
    `String` | `getActionCommand()` | Returns the action command for this button.
    `ActionListener[]` | `getActionListeners()` | Returns an array of all the `ActionListener`s added to this AbstractButton with addActionListener().
    `ChangeListener[]` | `getChangeListeners()` | Returns an array of all the `ChangeListener`s added to this AbstractButton with addChangeListener().
    `Icon` | `getDisabledIcon()` | Returns the icon used by the button when it's disabled.
    `Icon` | `getDisabledSelectedIcon()` | Returns the icon used by the button when it's disabled and selected.
    `int` | `getDisplayedMnemonicIndex()` | Returns the character, as an index, that the look and feel should provide decoration for as representing the mnemonic character.
    `boolean` | `getHideActionText()` | Returns the value of the `hideActionText` property, which determines whether the button displays text from the `Action`.
    `int` | `getHorizontalAlignment()` | Returns the horizontal alignment of the icon and text.
    `int` | `getHorizontalTextPosition()` | Returns the horizontal position of the text relative to the icon.
    `Icon` | `getIcon()` | Returns the default icon.
    `int` | `getIconTextGap()` | Returns the amount of space between the text and the icon displayed in this button.
    `ItemListener[]` | `getItemListeners()` | Returns an array of all the `ItemListener`s added to this AbstractButton with addItemListener().
    `String` | `getLabel()` | Deprecated. - Replaced by `getText`
    `Insets` | `getMargin()` | Returns the margin between the button's border and the label.
    `int` | `getMnemonic()` | Returns the keyboard mnemonic from the the current model.
    `ButtonModel` | `getModel()` | Returns the model that this button represents.
    `long` | `getMultiClickThreshhold()` | Gets the amount of time (in milliseconds) required between mouse press events for the button to generate the corresponding action events.
    `Icon` | `getPressedIcon()` | Returns the pressed icon for the button.
    `Icon` | `getRolloverIcon()` | Returns the rollover icon for the button.
    `Icon` | `getRolloverSelectedIcon()` | Returns the rollover selection icon for the button.
    `Icon` | `getSelectedIcon()` | Returns the selected icon for the button.
    `Object[]` | `getSelectedObjects()` | Returns an array (length 1) containing the label or `null` if the button is not selected.
    `String` | `getText()` | Returns the button's text.
    `ButtonUI` | `getUI()` | Returns the L&F object that renders this component.
    `int` | `getVerticalAlignment()` | Returns the vertical alignment of the text and icon.
    `int` | `getVerticalTextPosition()` | Returns the vertical position of the text relative to the icon.
    `boolean` | `imageUpdate(Image img, int infoflags, int x, int y, int w, int h)` | This is overridden to return false if the current `Icon`'s `Image` is not equal to the passed in `Image` `img`.
    `protected void` | `init(String text, Icon icon)` |
    `boolean` | `isBorderPainted()` | Gets the `borderPainted` property.
    `boolean` | `isContentAreaFilled()` | Gets the `contentAreaFilled` property.
    `boolean` | `isFocusPainted()` | Gets the `paintFocus` property.
    `boolean` | `isRolloverEnabled()` | Gets the `rolloverEnabled` property.
    `boolean` | `isSelected()` | Returns the state of the button.
    `protected void` | `paintBorder(Graphics g)` | Paint the button's border if `BorderPainted` property is true and the button has a border.
    `protected String` | `paramString()` | Returns a string representation of this `AbstractButton`.
    `void` | `removeActionListener(ActionListener l)` | Removes an `ActionListener` from the button.
    `void` | `removeChangeListener(ChangeListener l)` | Removes a ChangeListener from the button.
    `void` | `removeItemListener(ItemListener l)` | Removes an `ItemListener` from the button.
    `void` | `removeNotify()` | Notifies this component that it no longer has a parent component.
    `void` | `setAction(Action a)` | Sets the `Action`.
    `void` | `setActionCommand(String actionCommand)` | Sets the action command for this button.
    `void` | `setBorderPainted(boolean b)` | Sets the `borderPainted` property.
    `void` | `setContentAreaFilled(boolean b)` | Sets the `contentAreaFilled` property.
    `void` | `setDisabledIcon(Icon disabledIcon)` | Sets the disabled icon for the button.
    `void` | `setDisabledSelectedIcon(Icon disabledSelectedIcon)` | Sets the disabled selection icon for the button.
    `void` | `setDisplayedMnemonicIndex(int index)` | Provides a hint to the look and feel as to which character in the text should be decorated to represent the mnemonic.
    `void` | `setEnabled(boolean b)` | Enables (or disables) the button.
    `void` | `setFocusPainted(boolean b)` | Sets the `paintFocus` property, which must be `true` for the focus state to be painted.
    `void` | `setHideActionText(boolean hideActionText)` | Sets the `hideActionText` property, which determines whether the button displays text from the `Action`.
    `void` | `setHorizontalAlignment(int alignment)` | Sets the horizontal alignment of the icon and text.
    `void` | `setHorizontalTextPosition(int textPosition)` | Sets the horizontal position of the text relative to the icon.
    `void` | `setIcon(Icon defaultIcon)` | Sets the button's default icon.
    `void` | `setIconTextGap(int iconTextGap)` | If both the icon and text properties are set, this property defines the space between them.
    `void` | `setLabel(String label)` | Deprecated. - Replaced by `setText(text)`
    `void` | `setLayout(LayoutManager mgr)` | Sets the layout manager for this container, refer to `Container.setLayout(LayoutManager)` for a complete description of this method.
    `void` | `setMargin(Insets m)` | Sets space for margin between the button's border and the label.
    `void` | `setMnemonic(char mnemonic)` | This method is now obsolete, please use `setMnemonic(int)` to set the mnemonic for a button.
    `void` | `setMnemonic(int mnemonic)` | Sets the keyboard mnemonic on the current model.
    `void` | `setModel(ButtonModel newModel)` | Sets the model that this button represents.
    `void` | `setMultiClickThreshhold(long threshhold)` | Sets the amount of time (in milliseconds) required between mouse press events for the button to generate the corresponding action events.
    `void` | `setPressedIcon(Icon pressedIcon)` | Sets the pressed icon for the button.
    `void` | `setRolloverEnabled(boolean b)` | Sets the `rolloverEnabled` property, which must be `true` for rollover effects to occur.
    `void` | `setRolloverIcon(Icon rolloverIcon)` | Sets the rollover icon for the button.
    `void` | `setRolloverSelectedIcon(Icon rolloverSelectedIcon)` | Sets the rollover selected icon for the button.
    `void` | `setSelected(boolean b)` | Sets the state of the button.
    `void` | `setSelectedIcon(Icon selectedIcon)` | Sets the selected icon for the button.
    `void` | `setText(String text)` | Sets the button's text.
    `void` | `setUI(ButtonUI ui)` | Sets the L&F object that renders this component.
    `void` | `setVerticalAlignment(int alignment)` | Sets the vertical alignment of the icon and text.
    `void` | `setVerticalTextPosition(int textPosition)` | Sets the vertical position of the text relative to the icon.
    `void` | `updateUI()` | Resets the UI property to a value from the current look and feel.

    - ### Methods inherited from class javax.swing.JComponent

      `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

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

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

- - ### Field Detail

    - #### MODEL_CHANGED_PROPERTY

          public static final String MODEL_CHANGED_PROPERTY

      Identifies a change in the button model.
      See Also:
        Constant Field Values

    - #### TEXT_CHANGED_PROPERTY

          public static final String TEXT_CHANGED_PROPERTY

      Identifies a change in the button's text.
      See Also:
        Constant Field Values

    - #### MNEMONIC_CHANGED_PROPERTY

          public static final String MNEMONIC_CHANGED_PROPERTY

      Identifies a change to the button's mnemonic.
      See Also:
        Constant Field Values

    - #### MARGIN_CHANGED_PROPERTY

          public static final String MARGIN_CHANGED_PROPERTY

      Identifies a change in the button's margins.
      See Also:
        Constant Field Values

    - #### VERTICAL_ALIGNMENT_CHANGED_PROPERTY

          public static final String VERTICAL_ALIGNMENT_CHANGED_PROPERTY

      Identifies a change in the button's vertical alignment.
      See Also:
        Constant Field Values

    - #### HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY

          public static final String HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY

      Identifies a change in the button's horizontal alignment.
      See Also:
        Constant Field Values

    - #### VERTICAL_TEXT_POSITION_CHANGED_PROPERTY

          public static final String VERTICAL_TEXT_POSITION_CHANGED_PROPERTY

      Identifies a change in the button's vertical text position.
      See Also:
        Constant Field Values

    - #### HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY

          public static final String HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY

      Identifies a change in the button's horizontal text position.
      See Also:
        Constant Field Values

    - #### BORDER_PAINTED_CHANGED_PROPERTY

          public static final String BORDER_PAINTED_CHANGED_PROPERTY

      Identifies a change to having the border drawn, or having it not drawn.
      See Also:
        Constant Field Values

    - #### FOCUS_PAINTED_CHANGED_PROPERTY

          public static final String FOCUS_PAINTED_CHANGED_PROPERTY

      Identifies a change to having the border highlighted when focused, or not.
      See Also:
        Constant Field Values

    - #### ROLLOVER_ENABLED_CHANGED_PROPERTY

          public static final String ROLLOVER_ENABLED_CHANGED_PROPERTY

      Identifies a change from rollover enabled to disabled or back to enabled.
      See Also:
        Constant Field Values

    - #### CONTENT_AREA_FILLED_CHANGED_PROPERTY

          public static final String CONTENT_AREA_FILLED_CHANGED_PROPERTY

      Identifies a change to having the button paint the content area.
      See Also:
        Constant Field Values

    - #### ICON_CHANGED_PROPERTY

          public static final String ICON_CHANGED_PROPERTY

      Identifies a change to the icon that represents the button.
      See Also:
        Constant Field Values

    - #### PRESSED_ICON_CHANGED_PROPERTY

          public static final String PRESSED_ICON_CHANGED_PROPERTY

      Identifies a change to the icon used when the button has been pressed.
      See Also:
        Constant Field Values

    - #### SELECTED_ICON_CHANGED_PROPERTY

          public static final String SELECTED_ICON_CHANGED_PROPERTY

      Identifies a change to the icon used when the button has been selected.
      See Also:
        Constant Field Values

    - #### ROLLOVER_ICON_CHANGED_PROPERTY

          public static final String ROLLOVER_ICON_CHANGED_PROPERTY

      Identifies a change to the icon used when the cursor is over the button.
      See Also:
        Constant Field Values

    - #### ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY

          public static final String ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY

      Identifies a change to the icon used when the cursor is over the button and it has been selected.
      See Also:
        Constant Field Values

    - #### DISABLED_ICON_CHANGED_PROPERTY

          public static final String DISABLED_ICON_CHANGED_PROPERTY

      Identifies a change to the icon used when the button has been disabled.
      See Also:
        Constant Field Values

    - #### DISABLED_SELECTED_ICON_CHANGED_PROPERTY

          public static final String DISABLED_SELECTED_ICON_CHANGED_PROPERTY

      Identifies a change to the icon used when the button has been disabled and selected.
      See Also:
        Constant Field Values

    - #### model

          protected ButtonModel model

      The data model that determines the button's state.

    - #### changeListener

          protected ChangeListener changeListener

      The button model's `changeListener`.

    - #### actionListener

          protected ActionListener actionListener

      The button model's `ActionListener`.

    - #### itemListener

          protected ItemListener itemListener

      The button model's `ItemListener`.

    - #### changeEvent

          protected transient ChangeEvent changeEvent

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

  - ### Constructor Detail

    - #### AbstractButton

          public AbstractButton()

  - ### Method Detail

    - #### setHideActionText

          public void setHideActionText(boolean hideActionText)

      Sets the `hideActionText` property, which determines whether the button displays text from the `Action`. This is useful only if an `Action` has been installed on the button.
      Parameters:
        `hideActionText` - `true` if the button's `text` property should not reflect that of the `Action`; the default is `false`
      Since:
        1.6
      See Also:
        Swing Components Supporting `Action`

    - #### getHideActionText

          public boolean getHideActionText()

      Returns the value of the `hideActionText` property, which determines whether the button displays text from the `Action`. This is useful only if an `Action` has been installed on the button.
      Returns:
        `true` if the button's `text` property should not reflect that of the `Action`; the default is `false`
      Since:
        1.6

    - #### getText

          public String getText()

      Returns the button's text.
      Returns:
        the buttons text
      See Also:
        `setText(java.lang.String)`

    - #### setText

          public void setText(String text)

      Sets the button's text.
      Parameters:
        `text` - the string used to set the text
      See Also:
        `getText()`

    - #### isSelected

          public boolean isSelected()

      Returns the state of the button. True if the toggle button is selected, false if it's not.
      Returns:
        true if the toggle button is selected, otherwise false

    - #### setSelected

          public void setSelected(boolean b)

      Sets the state of the button. Note that this method does not trigger an `actionEvent`. Call `doClick` to perform a programmatic action change.
      Parameters:
        `b` - true if the button is selected, otherwise false

    - #### doClick

          public void doClick()

      Programmatically perform a "click". This does the same thing as if the user had pressed and released the button.

    - #### doClick

          public void doClick(int pressTime)

      Programmatically perform a "click". This does the same thing as if the user had pressed and released the button. The button stays visually "pressed" for `pressTime` milliseconds.
      Parameters:
        `pressTime` - the time to "hold down" the button, in milliseconds

    - #### setMargin

          public void setMargin(Insets m)

      Sets space for margin between the button's border and the label. Setting to `null` will cause the button to use the default margin. The button's default `Border` object will use this value to create the proper margin. However, if a non-default border is set on the button, it is that `Border` object's responsibility to create the appropriate margin space (else this property will effectively be ignored).
      Parameters:
        `m` - the space between the border and the label

    - #### getMargin

          public Insets getMargin()

      Returns the margin between the button's border and the label.
      Returns:
        an `Insets` object specifying the margin between the botton's border and the label
      See Also:
        `setMargin(java.awt.Insets)`

    - #### getIcon

          public Icon getIcon()

      Returns the default icon.
      Returns:
        the default `Icon`
      See Also:
        `setIcon(javax.swing.Icon)`

    - #### setIcon

          public void setIcon(Icon defaultIcon)

      Sets the button's default icon. This icon is also used as the "pressed" and "disabled" icon if there is no explicitly set pressed icon.
      Parameters:
        `defaultIcon` - the icon used as the default image
      See Also:
        `getIcon()`, `setPressedIcon(javax.swing.Icon)`

    - #### getPressedIcon

          public Icon getPressedIcon()

      Returns the pressed icon for the button.
      Returns:
        the `pressedIcon` property
      See Also:
        `setPressedIcon(javax.swing.Icon)`

    - #### setPressedIcon

          public void setPressedIcon(Icon pressedIcon)

      Sets the pressed icon for the button.
      Parameters:
        `pressedIcon` - the icon used as the "pressed" image
      See Also:
        `getPressedIcon()`

    - #### getSelectedIcon

          public Icon getSelectedIcon()

      Returns the selected icon for the button.
      Returns:
        the `selectedIcon` property
      See Also:
        `setSelectedIcon(javax.swing.Icon)`

    - #### setSelectedIcon

          public void setSelectedIcon(Icon selectedIcon)

      Sets the selected icon for the button.
      Parameters:
        `selectedIcon` - the icon used as the "selected" image
      See Also:
        `getSelectedIcon()`

    - #### getRolloverIcon

          public Icon getRolloverIcon()

      Returns the rollover icon for the button.
      Returns:
        the `rolloverIcon` property
      See Also:
        `setRolloverIcon(javax.swing.Icon)`

    - #### setRolloverIcon

          public void setRolloverIcon(Icon rolloverIcon)

      Sets the rollover icon for the button.
      Parameters:
        `rolloverIcon` - the icon used as the "rollover" image
      See Also:
        `getRolloverIcon()`

    - #### getRolloverSelectedIcon

          public Icon getRolloverSelectedIcon()

      Returns the rollover selection icon for the button.
      Returns:
        the `rolloverSelectedIcon` property
      See Also:
        `setRolloverSelectedIcon(javax.swing.Icon)`

    - #### setRolloverSelectedIcon

          public void setRolloverSelectedIcon(Icon rolloverSelectedIcon)

      Sets the rollover selected icon for the button.
      Parameters:
        `rolloverSelectedIcon` - the icon used as the "selected rollover" image
      See Also:
        `getRolloverSelectedIcon()`

    - #### getDisabledIcon

          public Icon getDisabledIcon()

      Returns the icon used by the button when it's disabled. If no disabled icon has been set this will forward the call to the look and feel to construct an appropriate disabled Icon.

      Some look and feels might not render the disabled Icon, in which case they will ignore this.

      Returns:
        the `disabledIcon` property
      See Also:
        `getPressedIcon()`, `setDisabledIcon(javax.swing.Icon)`, `LookAndFeel.getDisabledIcon(javax.swing.JComponent, javax.swing.Icon)`

    - #### setDisabledIcon

          public void setDisabledIcon(Icon disabledIcon)

      Sets the disabled icon for the button.
      Parameters:
        `disabledIcon` - the icon used as the disabled image
      See Also:
        `getDisabledIcon()`

    - #### getDisabledSelectedIcon

          public Icon getDisabledSelectedIcon()

      Returns the icon used by the button when it's disabled and selected. If no disabled selection icon has been set, this will forward the call to the LookAndFeel to construct an appropriate disabled Icon from the selection icon if it has been set and to `getDisabledIcon()` otherwise.

      Some look and feels might not render the disabled selected Icon, in which case they will ignore this.

      Returns:
        the `disabledSelectedIcon` property
      See Also:
        `getDisabledIcon()`, `setDisabledSelectedIcon(javax.swing.Icon)`, `LookAndFeel.getDisabledSelectedIcon(javax.swing.JComponent, javax.swing.Icon)`

    - #### setDisabledSelectedIcon

          public void setDisabledSelectedIcon(Icon disabledSelectedIcon)

      Sets the disabled selection icon for the button.
      Parameters:
        `disabledSelectedIcon` - the icon used as the disabled selection image
      See Also:
        `getDisabledSelectedIcon()`

    - #### getVerticalAlignment

          public int getVerticalAlignment()

      Returns the vertical alignment of the text and icon.
      Returns:
        the `verticalAlignment` property, one of the following values:
        - `SwingConstants.CENTER` (the default)
        - `SwingConstants.TOP`
        - `SwingConstants.BOTTOM`

    - #### setVerticalAlignment

          public void setVerticalAlignment(int alignment)

      Sets the vertical alignment of the icon and text.
      Parameters:
        `alignment` - one of the following values:
        - `SwingConstants.CENTER` (the default)
        - `SwingConstants.TOP`
        - `SwingConstants.BOTTOM`
      Throws:
        `IllegalArgumentException` - if the alignment is not one of the legal values listed above

    - #### getHorizontalAlignment

          public int getHorizontalAlignment()

      Returns the horizontal alignment of the icon and text. `AbstractButton`'s default is `SwingConstants.CENTER`, but subclasses such as `JCheckBox` may use a different default.
      Returns:
        the `horizontalAlignment` property, one of the following values:
        - `SwingConstants.RIGHT`
        - `SwingConstants.LEFT`
        - `SwingConstants.CENTER`
        - `SwingConstants.LEADING`
        - `SwingConstants.TRAILING`

    - #### setHorizontalAlignment

          public void setHorizontalAlignment(int alignment)

      Sets the horizontal alignment of the icon and text. `AbstractButton`'s default is `SwingConstants.CENTER`, but subclasses such as `JCheckBox` may use a different default.
      Parameters:
        `alignment` - the alignment value, one of the following values:
        - `SwingConstants.RIGHT`
        - `SwingConstants.LEFT`
        - `SwingConstants.CENTER`
        - `SwingConstants.LEADING`
        - `SwingConstants.TRAILING`
      Throws:
        `IllegalArgumentException` - if the alignment is not one of the valid values

    - #### getVerticalTextPosition

          public int getVerticalTextPosition()

      Returns the vertical position of the text relative to the icon.
      Returns:
        the `verticalTextPosition` property, one of the following values:
        - `SwingConstants.CENTER` (the default)
        - `SwingConstants.TOP`
        - `SwingConstants.BOTTOM`

    - #### setVerticalTextPosition

          public void setVerticalTextPosition(int textPosition)

      Sets the vertical position of the text relative to the icon.
      Parameters:
        `textPosition` - one of the following values:
        - `SwingConstants.CENTER` (the default)
        - `SwingConstants.TOP`
        - `SwingConstants.BOTTOM`

    - #### getHorizontalTextPosition

          public int getHorizontalTextPosition()

      Returns the horizontal position of the text relative to the icon.
      Returns:
        the `horizontalTextPosition` property, one of the following values:
        - `SwingConstants.RIGHT`
        - `SwingConstants.LEFT`
        - `SwingConstants.CENTER`
        - `SwingConstants.LEADING`
        - `SwingConstants.TRAILING` (the default)

    - #### setHorizontalTextPosition

          public void setHorizontalTextPosition(int textPosition)

      Sets the horizontal position of the text relative to the icon.
      Parameters:
        `textPosition` - one of the following values:
        - `SwingConstants.RIGHT`
        - `SwingConstants.LEFT`
        - `SwingConstants.CENTER`
        - `SwingConstants.LEADING`
        - `SwingConstants.TRAILING` (the default)
      Throws:
        `IllegalArgumentException` - if `textPosition` is not one of the legal values listed above

    - #### getIconTextGap

          public int getIconTextGap()

      Returns the amount of space between the text and the icon displayed in this button.
      Returns:
        an int equal to the number of pixels between the text and the icon.
      Since:
        1.4
      See Also:
        `setIconTextGap(int)`

    - #### setIconTextGap

          public void setIconTextGap(int iconTextGap)

      If both the icon and text properties are set, this property defines the space between them.

      The default value of this property is 4 pixels.

      This is a JavaBeans bound property.

      Since:
        1.4
      See Also:
        `getIconTextGap()`

    - #### checkHorizontalKey

          protected int checkHorizontalKey(int key,
                                           String exception)

      Verify that the `key` argument is a legal value for the `horizontalAlignment` and `horizontalTextPosition` properties. Valid values are:
      - `SwingConstants.RIGHT`
      - `SwingConstants.LEFT`
      - `SwingConstants.CENTER`
      - `SwingConstants.LEADING`
      - `SwingConstants.TRAILING`
      Parameters:
        `key` - the property value to check
        `exception` - the message to use in the `IllegalArgumentException` that is thrown for an invalid value
      Returns:
        the `key` argument
      Throws:
        `IllegalArgumentException` - if key is not one of the legal values listed above
      See Also:
        `setHorizontalTextPosition(int)`, `setHorizontalAlignment(int)`

    - #### checkVerticalKey

          protected int checkVerticalKey(int key,
                                         String exception)

      Verify that the `key` argument is a legal value for the vertical properties. Valid values are:
      - `SwingConstants.CENTER`
      - `SwingConstants.TOP`
      - `SwingConstants.BOTTOM`
      Parameters:
        `key` - the property value to check
        `exception` - the message to use in the `IllegalArgumentException` that is thrown for an invalid value
      Returns:
        the `key` argument
      Throws:
        `IllegalArgumentException` - if key is not one of the legal values listed above

    - #### removeNotify

          public void removeNotify()

      Notifies this component that it no longer has a parent component. When this method is invoked, any `KeyboardAction`s set up in the the chain of parent components are removed. This method is called by the toolkit internally and should not be called directly by programs.
      Overrides:
        `removeNotify` in class `JComponent`
      Since:
        1.6
      See Also:
        `JComponent.registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)`

    - #### setActionCommand

          public void setActionCommand(String actionCommand)

      Sets the action command for this button.
      Parameters:
        `actionCommand` - the action command for this button

    - #### getActionCommand

          public String getActionCommand()

      Returns the action command for this button.
      Returns:
        the action command for this button

    - #### setAction

          public void setAction(Action a)

      Sets the `Action`. The new `Action` replaces any previously set `Action` but does not affect `ActionListeners` independently added with `addActionListener`. If the `Action` is already a registered `ActionListener` for the button, it is not re-registered.

      Setting the `Action` results in immediately changing all the properties described in Swing Components Supporting `Action`. Subsequently, the button's properties are automatically updated as the `Action`'s properties change.

      This method uses three other methods to set and help track the `Action`'s property values. It uses the `configurePropertiesFromAction` method to immediately change the button's properties. To track changes in the `Action`'s property values, this method registers the `PropertyChangeListener` returned by `createActionPropertyChangeListener`. The default `PropertyChangeListener` invokes the `actionPropertyChanged` method when a property in the `Action` changes.

      Parameters:
        `a` - the `Action` for the `AbstractButton`, or `null`
      Since:
        1.3
      See Also:
        `Action`, `getAction()`, `configurePropertiesFromAction(javax.swing.Action)`, `createActionPropertyChangeListener(javax.swing.Action)`, `actionPropertyChanged(javax.swing.Action, java.lang.String)`

    - #### getAction

          public Action getAction()

      Returns the currently set `Action` for this `ActionEvent` source, or `null` if no `Action` is set.
      Returns:
        the `Action` for this `ActionEvent` source, or `null`
      Since:
        1.3
      See Also:
        `Action`, `setAction(javax.swing.Action)`

    - #### configurePropertiesFromAction

          protected void configurePropertiesFromAction(Action a)

      Sets the properties on this button to match those in the specified `Action`. Refer to Swing Components Supporting `Action` for more details as to which properties this sets.
      Parameters:
        `a` - the `Action` from which to get the properties, or `null`
      Since:
        1.3
      See Also:
        `Action`, `setAction(javax.swing.Action)`

    - #### actionPropertyChanged

          protected void actionPropertyChanged(Action action,
                                               String propertyName)

      Updates the button's state in response to property changes in the associated action. This method is invoked from the `PropertyChangeListener` returned from `createActionPropertyChangeListener`. Subclasses do not normally need to invoke this. Subclasses that support additional `Action` properties should override this and `configurePropertiesFromAction`.

      Refer to the table at Swing Components Supporting `Action` for a list of the properties this method sets.

      Parameters:
        `action` - the `Action` associated with this button
        `propertyName` - the name of the property that changed
      Since:
        1.6
      See Also:
        `Action`, `configurePropertiesFromAction(javax.swing.Action)`

    - #### createActionPropertyChangeListener

          protected PropertyChangeListener createActionPropertyChangeListener(Action a)

      Creates and returns a `PropertyChangeListener` that is responsible for listening for changes from the specified `Action` and updating the appropriate properties.

      Warning: If you subclass this do not create an anonymous inner class. If you do the lifetime of the button will be tied to that of the `Action`.

      Parameters:
        `a` - the button's action
      Since:
        1.3
      See Also:
        `Action`, `setAction(javax.swing.Action)`

    - #### isBorderPainted

          public boolean isBorderPainted()

      Gets the `borderPainted` property.
      Returns:
        the value of the `borderPainted` property
      See Also:
        `setBorderPainted(boolean)`

    - #### setBorderPainted

          public void setBorderPainted(boolean b)

      Sets the `borderPainted` property. If `true` and the button has a border, the border is painted. The default value for the `borderPainted` property is `true`.

      Some look and feels might not support the `borderPainted` property, in which case they ignore this.

      Parameters:
        `b` - if true and border property is not `null`, the border is painted
      See Also:
        `isBorderPainted()`

    - #### paintBorder

          protected void paintBorder(Graphics g)

      Paint the button's border if `BorderPainted` property is true and the button has a border.
      Overrides:
        `paintBorder` in class `JComponent`
      Parameters:
        `g` - the `Graphics` context in which to paint
      See Also:
        `JComponent.paint(java.awt.Graphics)`, `JComponent.setBorder(javax.swing.border.Border)`

    - #### isFocusPainted

          public boolean isFocusPainted()

      Gets the `paintFocus` property.
      Returns:
        the `paintFocus` property
      See Also:
        `setFocusPainted(boolean)`

    - #### setFocusPainted

          public void setFocusPainted(boolean b)

      Sets the `paintFocus` property, which must be `true` for the focus state to be painted. The default value for the `paintFocus` property is `true`. Some look and feels might not paint focus state; they will ignore this property.
      Parameters:
        `b` - if `true`, the focus state should be painted
      See Also:
        `isFocusPainted()`

    - #### isContentAreaFilled

          public boolean isContentAreaFilled()

      Gets the `contentAreaFilled` property.
      Returns:
        the `contentAreaFilled` property
      See Also:
        `setContentAreaFilled(boolean)`

    - #### setContentAreaFilled

          public void setContentAreaFilled(boolean b)

      Sets the `contentAreaFilled` property. If `true` the button will paint the content area. If you wish to have a transparent button, such as an icon only button, for example, then you should set this to `false`. Do not call `setOpaque(false)`. The default value for the the `contentAreaFilled` property is `true`.

      This function may cause the component's opaque property to change.

      The exact behavior of calling this function varies on a component-by-component and L&F-by-L&F basis.

      Parameters:
        `b` - if true, the content should be filled; if false the content area is not filled
      See Also:
        `isContentAreaFilled()`, `JComponent.setOpaque(boolean)`

    - #### isRolloverEnabled

          public boolean isRolloverEnabled()

      Gets the `rolloverEnabled` property.
      Returns:
        the value of the `rolloverEnabled` property
      See Also:
        `setRolloverEnabled(boolean)`

    - #### setRolloverEnabled

          public void setRolloverEnabled(boolean b)

      Sets the `rolloverEnabled` property, which must be `true` for rollover effects to occur. The default value for the `rolloverEnabled` property is `false`. Some look and feels might not implement rollover effects; they will ignore this property.
      Parameters:
        `b` - if `true`, rollover effects should be painted
      See Also:
        `isRolloverEnabled()`

    - #### getMnemonic

          public int getMnemonic()

      Returns the keyboard mnemonic from the the current model.
      Returns:
        the keyboard mnemonic from the model

    - #### setMnemonic

          public void setMnemonic(int mnemonic)

      Sets the keyboard mnemonic on the current model. The mnemonic is the key which when combined with the look and feel's mouseless modifier (usually Alt) will activate this button if focus is contained somewhere within this button's ancestor window.

      A mnemonic must correspond to a single key on the keyboard and should be specified using one of the `VK_XXX` keycodes defined in `java.awt.event.KeyEvent`. These codes and the wider array of codes for international keyboards may be obtained through `java.awt.event.KeyEvent.getExtendedKeyCodeForChar`. Mnemonics are case-insensitive, therefore a key event with the corresponding keycode would cause the button to be activated whether or not the Shift modifier was pressed.

      If the character defined by the mnemonic is found within the button's label string, the first occurrence of it will be underlined to indicate the mnemonic to the user.

      Parameters:
        `mnemonic` - the key code which represents the mnemonic
      See Also:
        `KeyEvent`, `setDisplayedMnemonicIndex(int)`

    - #### setMnemonic

          public void setMnemonic(char mnemonic)

      This method is now obsolete, please use `setMnemonic(int)` to set the mnemonic for a button. This method is only designed to handle character values which fall between 'a' and 'z' or 'A' and 'Z'.
      Parameters:
        `mnemonic` - a char specifying the mnemonic value
      See Also:
        `setMnemonic(int)`

    - #### setDisplayedMnemonicIndex

          public void setDisplayedMnemonicIndex(int index)
                                         throws IllegalArgumentException

      Provides a hint to the look and feel as to which character in the text should be decorated to represent the mnemonic. Not all look and feels may support this. A value of -1 indicates either there is no mnemonic, the mnemonic character is not contained in the string, or the developer does not wish the mnemonic to be displayed.

      The value of this is updated as the properties relating to the mnemonic change (such as the mnemonic itself, the text...). You should only ever have to call this if you do not wish the default character to be underlined. For example, if the text was 'Save As', with a mnemonic of 'a', and you wanted the 'A' to be decorated, as 'Save As', you would have to invoke `setDisplayedMnemonicIndex(5)` after invoking `setMnemonic(KeyEvent.VK_A)`.

      Parameters:
        `index` - Index into the String to underline
      Throws:
        `IllegalArgumentException` - will be thrown if `index` is >= length of the text, or < -1
      Since:
        1.4
      See Also:
        `getDisplayedMnemonicIndex()`

    - #### getDisplayedMnemonicIndex

          public int getDisplayedMnemonicIndex()

      Returns the character, as an index, that the look and feel should provide decoration for as representing the mnemonic character.
      Returns:
        index representing mnemonic character
      Since:
        1.4
      See Also:
        `setDisplayedMnemonicIndex(int)`

    - #### setMultiClickThreshhold

          public void setMultiClickThreshhold(long threshhold)

      Sets the amount of time (in milliseconds) required between mouse press events for the button to generate the corresponding action events. After the initial mouse press occurs (and action event generated) any subsequent mouse press events which occur on intervals less than the threshhold will be ignored and no corresponding action event generated. By default the threshhold is 0, which means that for each mouse press, an action event will be fired, no matter how quickly the mouse clicks occur. In buttons where this behavior is not desirable (for example, the "OK" button in a dialog), this threshhold should be set to an appropriate positive value.
      Parameters:
        `threshhold` - the amount of time required between mouse press events to generate corresponding action events
      Throws:
        `IllegalArgumentException` - if threshhold < 0
      Since:
        1.4
      See Also:
        `getMultiClickThreshhold()`

    - #### getMultiClickThreshhold

          public long getMultiClickThreshhold()

      Gets the amount of time (in milliseconds) required between mouse press events for the button to generate the corresponding action events.
      Returns:
        the amount of time required between mouse press events to generate corresponding action events
      Since:
        1.4
      See Also:
        `setMultiClickThreshhold(long)`

    - #### getModel

          public ButtonModel getModel()

      Returns the model that this button represents.
      Returns:
        the `model` property
      See Also:
        `setModel(javax.swing.ButtonModel)`

    - #### setModel

          public void setModel(ButtonModel newModel)

      Sets the model that this button represents.
      Parameters:
        `newModel` - the new `ButtonModel`
      See Also:
        `getModel()`

    - #### getUI

          public ButtonUI getUI()

      Returns the L&F object that renders this component.
      Returns:
        the ButtonUI object
      See Also:
        `setUI(javax.swing.plaf.ButtonUI)`

    - #### setUI

          public void setUI(ButtonUI ui)

      Sets the L&F object that renders this component.
      Parameters:
        `ui` - the `ButtonUI` L&F object
      See Also:
        `getUI()`

    - #### updateUI

          public void updateUI()

      Resets the UI property to a value from the current look and feel. Subtypes of `AbstractButton` should override this to update the UI. For example, `JButton` might do the following:

                setUI((ButtonUI)UIManager.getUI(
                    "ButtonUI", "javax.swing.plaf.basic.BasicButtonUI", this));

      Overrides:
        `updateUI` in class `JComponent`
      See Also:
        `JComponent.setUI(javax.swing.plaf.ComponentUI)`, `UIManager.getLookAndFeel()`, `UIManager.getUI(javax.swing.JComponent)`

    - #### addImpl

          protected void addImpl(Component comp,
                                 Object constraints,
                                 int index)

      Adds the specified component to this container at the specified index, refer to `Container.addImpl(Component, Object, int)` for a complete description of this method.
      Overrides:
        `addImpl` in class `Container`
      Parameters:
        `comp` - the component to be added
        `constraints` - an object expressing layout constraints for this component
        `index` - the position in the container's list at which to insert the component, where `-1` means append to the end
      Throws:
        `IllegalArgumentException` - if `index` is invalid
        `IllegalArgumentException` - if adding the container's parent to itself
        `IllegalArgumentException` - if adding a window to a container
      Since:
        1.5
      See Also:
        `Container.add(Component)`, `Container.add(Component, int)`, `Container.add(Component, java.lang.Object)`, `Container.invalidate()`, `LayoutManager`, `LayoutManager2`

    - #### setLayout

          public void setLayout(LayoutManager mgr)

      Sets the layout manager for this container, refer to `Container.setLayout(LayoutManager)` for a complete description of this method.
      Overrides:
        `setLayout` in class `Container`
      Parameters:
        `mgr` - the specified layout manager
      Since:
        1.5
      See Also:
        `Container.doLayout()`, `Container.getLayout()`, `Container.invalidate()`

    - #### addChangeListener

          public void addChangeListener(ChangeListener l)

      Adds a `ChangeListener` to the button.
      Parameters:
        `l` - the listener to be added

    - #### removeChangeListener

          public void removeChangeListener(ChangeListener l)

      Removes a ChangeListener from the button.
      Parameters:
        `l` - the listener to be removed

    - #### getChangeListeners

          public ChangeListener[] getChangeListeners()

      Returns an array of all the `ChangeListener`s added to this AbstractButton with addChangeListener().
      Returns:
        all of the `ChangeListener`s added or an empty array if no listeners have been added
      Since:
        1.4

    - #### fireStateChanged

          protected void fireStateChanged()

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

    - #### addActionListener

          public void addActionListener(ActionListener l)

      Adds an `ActionListener` to the button.
      Parameters:
        `l` - the `ActionListener` to be added

    - #### removeActionListener

          public void removeActionListener(ActionListener l)

      Removes an `ActionListener` from the button. If the listener is the currently set `Action` for the button, then the `Action` is set to `null`.
      Parameters:
        `l` - the listener to be removed

    - #### getActionListeners

          public ActionListener[] getActionListeners()

      Returns an array of all the `ActionListener`s added to this AbstractButton with addActionListener().
      Returns:
        all of the `ActionListener`s added or an empty array if no listeners have been added
      Since:
        1.4

    - #### createChangeListener

          protected ChangeListener createChangeListener()

      Subclasses that want to handle `ChangeEvents` differently can override this to return another `ChangeListener` implementation.
      Returns:
        the new `ChangeListener`

    - #### fireActionPerformed

          protected void fireActionPerformed(ActionEvent event)

      Notifies all listeners that have registered interest for notification on this event type. The event instance is lazily created using the `event` parameter.
      Parameters:
        `event` - the `ActionEvent` object
      See Also:
        `EventListenerList`

    - #### fireItemStateChanged

          protected void fireItemStateChanged(ItemEvent event)

      Notifies all listeners that have registered interest for notification on this event type. The event instance is lazily created using the `event` parameter.
      Parameters:
        `event` - the `ItemEvent` object
      See Also:
        `EventListenerList`

    - #### createActionListener

          protected ActionListener createActionListener()

    - #### createItemListener

          protected ItemListener createItemListener()

    - #### setEnabled

          public void setEnabled(boolean b)

      Enables (or disables) the button.
      Overrides:
        `setEnabled` in class `JComponent`
      Parameters:
        `b` - true to enable the button, otherwise false
      See Also:
        `Component.isEnabled()`, `Component.isLightweight()`

    - #### getLabel

          @Deprecated
          public String getLabel()

      Deprecated. - Replaced by `getText`
      Returns the label text.
      Returns:
        a `String` containing the label

    - #### setLabel

          @Deprecated
          public void setLabel(String label)

      Deprecated. - Replaced by `setText(text)`
      Sets the label text.
      Parameters:
        `label` - a `String` containing the text

    - #### addItemListener

          public void addItemListener(ItemListener l)

      Adds an `ItemListener` to the `checkbox`.
      Specified by:
        `addItemListener` in interface `ItemSelectable`
      Parameters:
        `l` - the `ItemListener` to be added
      See Also:
        `ItemEvent`

    - #### removeItemListener

          public void removeItemListener(ItemListener l)

      Removes an `ItemListener` from the button.
      Specified by:
        `removeItemListener` in interface `ItemSelectable`
      Parameters:
        `l` - the `ItemListener` to be removed
      See Also:
        `ItemEvent`

    - #### getItemListeners

          public ItemListener[] getItemListeners()

      Returns an array of all the `ItemListener`s added to this AbstractButton with addItemListener().
      Returns:
        all of the `ItemListener`s added or an empty array if no listeners have been added
      Since:
        1.4

    - #### getSelectedObjects

          public Object[] getSelectedObjects()

      Returns an array (length 1) containing the label or `null` if the button is not selected.
      Specified by:
        `getSelectedObjects` in interface `ItemSelectable`
      Returns:
        an array containing 1 Object: the text of the button, if the item is selected; otherwise `null`

    - #### init

          protected void init(String text,
                              Icon icon)

    - #### imageUpdate

          public boolean imageUpdate(Image img,
                                     int infoflags,
                                     int x,
                                     int y,
                                     int w,
                                     int h)

      This is overridden to return false if the current `Icon`'s `Image` is not equal to the passed in `Image` `img`.
      Specified by:
        `imageUpdate` in interface `ImageObserver`
      Overrides:
        `imageUpdate` in class `Component`
      Parameters:
        `img` - the `Image` to be compared
        `infoflags` - flags used to repaint the button when the image is updated and which determine how much is to be painted
        `x` - the x coordinate
        `y` - the y coordinate
        `w` - the width
        `h` - the height
      Returns:
        `false` if the infoflags indicate that the image is completely loaded; `true` otherwise.
      See Also:
        `ImageObserver`, `Component.imageUpdate(java.awt.Image, int, int, int, int, int)`

    - #### paramString

          protected String paramString()

      Returns a string representation of this `AbstractButton`. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be `null`.

      Overriding `paramString` to provide information about the specific new aspects of the JFC components.

      Overrides:
        `paramString` in class `JComponent`
      Returns:
        a string representation of this `AbstractButton`

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.