# Class AbstractAction

java.lang.Object
javax.swing.AbstractAction

All Implemented Interfaces:
  `ActionListener, Serializable, Cloneable, EventListener, Action`

Direct Known Subclasses:
  `BasicDesktopPaneUI.CloseAction, BasicDesktopPaneUI.MaximizeAction, BasicDesktopPaneUI.MinimizeAction, BasicDesktopPaneUI.NavigateAction, BasicDesktopPaneUI.OpenAction, BasicFileChooserUI.ApproveSelectionAction, BasicFileChooserUI.CancelSelectionAction, BasicFileChooserUI.ChangeToParentDirectoryAction, BasicFileChooserUI.GoHomeAction, BasicFileChooserUI.NewFolderAction, BasicFileChooserUI.UpdateAction, BasicInternalFrameTitlePane.CloseAction, BasicInternalFrameTitlePane.IconifyAction, BasicInternalFrameTitlePane.MaximizeAction, BasicInternalFrameTitlePane.MoveAction, BasicInternalFrameTitlePane.RestoreAction, BasicInternalFrameTitlePane.SizeAction, BasicSliderUI.ActionScroller, BasicTreeUI.TreeCancelEditingAction, BasicTreeUI.TreeHomeAction, BasicTreeUI.TreeIncrementAction, BasicTreeUI.TreePageAction, BasicTreeUI.TreeToggleAction, BasicTreeUI.TreeTraverseAction, MetalFileChooserUI.DirectoryComboBoxAction, TextAction`

public abstract class AbstractAction extends Object implements Action, Cloneable, Serializable
This class provides default implementations for the JFC `Action` interface. Standard behaviors like the get and set methods for `Action` object properties (icon, text, and enabled) are defined here. The developer need only subclass this abstract class and define the `actionPerformed` method.

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
See Also:
  - `Action`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected SwingPropertyChangeSupport`
`changeSupport`
If any `PropertyChangeListeners` have been registered, the `changeSupport` field describes them.
`protected boolean`
`enabled`
Specifies whether action is enabled; the default is true.

### Fields declared in interface Action

`ACCELERATOR_KEY, ACTION_COMMAND_KEY, DEFAULT, DISPLAYED_MNEMONIC_INDEX_KEY, LARGE_ICON_KEY, LONG_DESCRIPTION, MNEMONIC_KEY, NAME, SELECTED_KEY, SHORT_DESCRIPTION, SMALL_ICON`
Modifier and Type
Field
Description
`static final String`
`ACCELERATOR_KEY`
The key used for storing a `KeyStroke` to be used as the accelerator for the action.
`static final String`
`ACTION_COMMAND_KEY`
The key used to determine the command `String` for the `ActionEvent` that will be created when an `Action` is going to be notified as the result of residing in a `Keymap` associated with a `JComponent`.
`static final String`
`DEFAULT`
Not currently used.
`static final String`
`DISPLAYED_MNEMONIC_INDEX_KEY`
The key used for storing an `Integer` that corresponds to the index in the text (identified by the `NAME` property) that the decoration for a mnemonic should be rendered at.
`static final String`
`LARGE_ICON_KEY`
The key used for storing an `Icon`.
`static final String`
`LONG_DESCRIPTION`
The key used for storing a longer `String` description for the action, could be used for context-sensitive help.
`static final String`
`MNEMONIC_KEY`
The key used for storing an `Integer` that corresponds to one of the `KeyEvent` key codes.
`static final String`
`NAME`
The key used for storing the `String` name for the action, used for a menu or button.
`static final String`
`SELECTED_KEY`
The key used for storing a `Boolean` that corresponds to the selected state.
`static final String`
`SHORT_DESCRIPTION`
The key used for storing a short `String` description for the action, used for tooltip text.
`static final String`
`SMALL_ICON`
The key used for storing a small `Icon`, such as `ImageIcon`.

## Constructor Summary

Constructors
Constructor
Description
`AbstractAction()`
Creates an `Action`.
`AbstractAction(String name)`
Creates an `Action` with the specified name.
`AbstractAction(String name, Icon icon)`
Creates an `Action` with the specified name and small icon.

## Method Summary

Modifier and Type
Method
Description
`void`
`addPropertyChangeListener(PropertyChangeListener listener)`
Adds a `PropertyChangeListener` to the listener list.
`protected Object`
`clone()`
Clones the abstract action.
`protected void`
`firePropertyChange(String propertyName, Object oldValue, Object newValue)`
Supports reporting bound property changes.
`Object[]`
`getKeys()`
Returns an array of `Object`s which are keys for which values have been set for this `AbstractAction`, or `null` if no keys have values set.
`PropertyChangeListener[]`
`getPropertyChangeListeners()`
Returns an array of all the `PropertyChangeListener`s added to this AbstractAction with addPropertyChangeListener().
`Object`
`getValue(String key)`
Gets the `Object` associated with the specified key.
`boolean`
`isEnabled()`
Returns true if the action is enabled.
`void`
`putValue(String key, Object newValue)`
Sets the `Value` associated with the specified key.
`void`
`removePropertyChangeListener(PropertyChangeListener listener)`
Removes a `PropertyChangeListener` from the listener list.
`void`
`setEnabled(boolean newValue)`
Sets whether the `Action` is enabled.

### Methods declared in class Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`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.

### Methods declared in interface Action

`accept`
Modifier and Type
Method
Description
`default boolean`
`accept(Object sender)`
Determines whether the action should be performed with the specified sender object.

### Methods declared in interface ActionListener

`actionPerformed`
Modifier and Type
Method
Description
`void`
`actionPerformed(ActionEvent e)`
Invoked when an action occurs.

## Field Details

### enabled

protected boolean enabled
Specifies whether action is enabled; the default is true.

### changeSupport

protected SwingPropertyChangeSupport changeSupport
If any `PropertyChangeListeners` have been registered, the `changeSupport` field describes them.

## Constructor Details

### AbstractAction

public AbstractAction()
Creates an `Action`.

### AbstractAction

public AbstractAction(String name)
Creates an `Action` with the specified name.

Parameters:
  `name` - the name (`Action.NAME`) for the action; a value of `null` is ignored

### AbstractAction

public AbstractAction(String name, Icon icon)
Creates an `Action` with the specified name and small icon.

Parameters:
  `name` - the name (`Action.NAME`) for the action; a value of `null` is ignored
  `icon` - the small icon (`Action.SMALL_ICON`) for the action; a value of `null` is ignored

## Method Details

### getValue

public Object getValue(String key)
Gets the `Object` associated with the specified key.

Specified by:
  `getValue` in interface `Action`
Parameters:
  `key` - a string containing the specified `key`
Returns:
  the binding `Object` stored with this key; if there are no keys, it will return `null`
See Also:
  - `Action.getValue(String)`

### putValue

public void putValue(String key, Object newValue)
Sets the `Value` associated with the specified key.

Specified by:
  `putValue` in interface `Action`
Parameters:
  `key` - the `String` that identifies the stored object
  `newValue` - the `Object` to store using this key
See Also:
  - `Action.putValue(String, Object)`

### isEnabled

public boolean isEnabled()
Returns true if the action is enabled.

Specified by:
  `isEnabled` in interface `Action`
Returns:
  true if the action is enabled, false otherwise
See Also:
  - `Action.isEnabled()`

### setEnabled

public void setEnabled(boolean newValue)
Sets whether the `Action` is enabled. The default is `true`.

Specified by:
  `setEnabled` in interface `Action`
Parameters:
  `newValue` - `true` to enable the action, `false` to disable it
See Also:
  - `Action.setEnabled(boolean)`

### getKeys

public Object[] getKeys()
Returns an array of `Object`s which are keys for which values have been set for this `AbstractAction`, or `null` if no keys have values set.

Returns:
  an array of key objects, or `null` if no keys have values set
Since:
  1.3

### firePropertyChange

protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
Supports reporting bound property changes. This method can be called when a bound property has changed and it will send the appropriate `PropertyChangeEvent` to any registered `PropertyChangeListeners`.

Parameters:
  `propertyName` - the name of the property that has changed
  `oldValue` - the old value of the property
  `newValue` - the new value of the property

### addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Adds a `PropertyChangeListener` to the listener list. The listener is registered for all properties.

A `PropertyChangeEvent` will get fired in response to setting a bound property, e.g. `setFont`, `setBackground`, or `setForeground`. Note that if the current component is inheriting its foreground, background, or font from its container, then no event will be fired in response to a change in the inherited property.

Specified by:
  `addPropertyChangeListener` in interface `Action`
Parameters:
  `listener` - The `PropertyChangeListener` to be added
See Also:
  - `Action.addPropertyChangeListener(PropertyChangeListener)`

### removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
Removes a `PropertyChangeListener` from the listener list. This removes a `PropertyChangeListener` that was registered for all properties.

Specified by:
  `removePropertyChangeListener` in interface `Action`
Parameters:
  `listener` - the `PropertyChangeListener` to be removed
See Also:
  - `Action.removePropertyChangeListener(PropertyChangeListener)`

### getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
Returns an array of all the `PropertyChangeListener`s added to this AbstractAction with addPropertyChangeListener().

Returns:
  all of the `PropertyChangeListener`s added or an empty array if no listeners have been added
Since:
  1.4

### clone

protected Object clone() throws CloneNotSupportedException
Clones the abstract action. This gives the clone its own copy of the key/value list, which is not handled for you by `Object.clone()`.

Overrides:
  `clone` in class `Object`
Returns:
  a clone of this instance.
Throws:
  `CloneNotSupportedException` - if the object's class does not support the `Cloneable` interface. Subclasses that override the `clone` method can also throw this exception to indicate that an instance cannot be cloned.
See Also:
  - `Cloneable`