Action interface provides a useful extension to the
ActionListener
interface in cases where the same functionality may be accessed by
several controls.
In addition to the actionPerformed method defined by the
ActionListener interface, this interface allows the
application to define, in a single place:
This interface can be added to an existing class or used to create an
adapter (typically, by subclassing AbstractAction).
The Action object
can then be added to multiple Action-aware containers
and connected to Action-capable
components. The GUI controls can then be activated or
deactivated all at once by invoking the Action object's
setEnabled method.
Note that Action implementations tend to be more expensive
in terms of storage than a typical ActionListener,
which does not offer the benefits of centralized control of
functionality and broadcast of property changes. For this reason,
you should take care to only use Actions where their benefits
are desired, and use simple ActionListeners elsewhere.
Action
Many of Swing's components have an Action property. When
an Action is set on a component, the following things
happen:
Action is added as an ActionListener to
the component.
Action.
PropertyChangeListener on the
Action so that the component can change its properties
to reflect changes in the Action's properties.
The following table describes the properties used by
Swing components that support Actions.
In the table, button refers to any
AbstractButton subclass, which includes not only
JButton but also classes such as
JMenuItem. Unless otherwise stated, a
null property value in an Action (or a
Action that is null) results in the
button's corresponding property being set to null.
| Component Property | Components | Action Key | Notes |
|---|---|---|---|
enabled
| All | The isEnabled method
| |
toolTipText
| All | SHORT_DESCRIPTION
| |
actionCommand
| All | ACTION_COMMAND_KEY
| |
mnemonic
| All buttons | MNEMONIC_KEY
| A null value or Action results in the button's
mnemonic property being set to '\0'.
|
text
| All buttons | NAME
| If you do not want the text of the button to mirror that of the
Action, set the property hideActionText to true.
If hideActionText is true, setting the Action
changes the text of the button to null and any changes to
NAME are ignored. hideActionText is useful for tool bar
buttons that typically only show an Icon.
JToolBar.add(Action) sets the property to true if the
Action has a non-null value for LARGE_ICON_KEY or
SMALL_ICON.
|
displayedMnemonicIndex
| All buttons | DISPLAYED_MNEMONIC_INDEX_KEY
| If the value of DISPLAYED_MNEMONIC_INDEX_KEY is beyond the
bounds of the text, it is ignored. When setAction is called, if
the value from the Action is null, the displayed mnemonic
index is not updated. In any subsequent changes to
DISPLAYED_MNEMONIC_INDEX_KEY, null is treated as -1.
|
icon
| All buttons except of JCheckBox, JToggleButton and
JRadioButton.
| either LARGE_ICON_KEY or SMALL_ICON
| The JMenuItem subclasses only use SMALL_ICON. All
other buttons will use LARGE_ICON_KEY; if the value is
null they use SMALL_ICON.
|
accelerator
| All JMenuItem subclasses, with the exception of JMenu.
| ACCELERATOR_KEY
| |
selected
| JToggleButton, JCheckBox, JRadioButton,
JCheckBoxMenuItem and JRadioButtonMenuItem
| SELECTED_KEY
| Components that honor this property only use the value if it is
non-null. For example, if you set an Action that has a
null value for SELECTED_KEY on a JToggleButton,
the JToggleButton will not update it's selected state in any way.
Similarly, any time the JToggleButton's selected state changes it
will only set the value back on the Action if the Action
has a non-null value for SELECTED_KEY.
Components that honor this property keep their selected state in sync with this property. When the same Action is used with multiple
components, all the components keep their selected state in sync with this
property. Mutually exclusive buttons, such as JToggleButtons in a
ButtonGroup, force only one of the buttons to be selected. As
such, do not use the same Action that defines a value for the
SELECTED_KEY property with multiple mutually exclusive buttons.
|
JPopupMenu, JToolBar and JMenu
all provide convenience methods for creating a component and setting the
Action on the corresponding component. Refer to each of
these classes for more information.
Action uses PropertyChangeListener to
inform listeners the Action has changed. The beans
specification indicates that a null property name can
be used to indicate multiple values have changed. By default Swing
components that take an Action do not handle such a
change. To indicate that Swing should treat null
according to the beans specification set the system property
swing.actions.reconfigureOnNull to the String
value true.
AbstractAction
| Modifier and Type | Field and Description |
|---|---|
| public static final String | ACCELERATOR_KEY
The key used for storing a |
| public static final String | ACTION_COMMAND_KEY
The key used to determine the command |
| public static final String | DEFAULT
Not currently used. |
| public static final String | DISPLAYED_MNEMONIC_INDEX_KEY
The key used for storing an |
| public static final String | LARGE_ICON_KEY
The key used for storing an |
| public static final String | LONG_DESCRIPTION
The key used for storing a longer |
| public static final String | MNEMONIC_KEY
The key used for storing an |
| public static final String | NAME
The key used for storing the |
| public static final String | SELECTED_KEY
The key used for storing a |
| public static final String | SHORT_DESCRIPTION
The key used for storing a short |
| public static final String | SMALL_ICON
The key used for storing a small |
| Modifier and Type | Method and Description |
|---|---|
| public default boolean | |
| public void | addPropertyChangeListener(PropertyChangeListener
a listener)PropertyChangeListener objectAdds a |
| public Object | |
| public boolean | |
| public void | |
| public void | removePropertyChangeListener(PropertyChangeListener
a listener)PropertyChangeListener objectRemoves a |
| public void | setEnabled(boolean
true to enable this b)Action, false to disable itSets the enabled state of the |
| ACCELERATOR_KEY | back to summary |
|---|---|
| public static final String ACCELERATOR_KEY The key used for storing a
| |
| ACTION_COMMAND_KEY | back to summary |
|---|---|
| public static final String ACTION_COMMAND_KEY The key used to determine the command | |
| DEFAULT | back to summary |
|---|---|
| public static final String DEFAULT Not currently used. | |
| DISPLAYED_MNEMONIC_INDEX_KEY | back to summary |
|---|---|
| public static final String DISPLAYED_MNEMONIC_INDEX_KEY The key used for storing an Note the value of this field is prefixed with 'Swing' to
avoid possible collisions with existing
| |
| LARGE_ICON_KEY | back to summary |
|---|---|
| public static final String LARGE_ICON_KEY The key used for storing an
If the same Note the value of this field is prefixed with 'Swing' to
avoid possible collisions with existing
| |
| LONG_DESCRIPTION | back to summary |
|---|---|
| public static final String LONG_DESCRIPTION The key used for storing a longer | |
| MNEMONIC_KEY | back to summary |
|---|---|
| public static final String MNEMONIC_KEY The key used for storing an
| |
| NAME | back to summary |
|---|---|
| public static final String NAME The key used for storing the | |
| SELECTED_KEY | back to summary |
|---|---|
| public static final String SELECTED_KEY The key used for storing a
This property differs from the others in that it is both read
by the component and set by the component. For example,
if an Note the value of this field is prefixed with 'Swing' to
avoid possible collisions with existing
| |
| SHORT_DESCRIPTION | back to summary |
|---|---|
| public static final String SHORT_DESCRIPTION The key used for storing a short | |
| SMALL_ICON | back to summary |
|---|---|
| public static final String SMALL_ICON The key used for storing a small
If the same | |
| accept | back to summary |
|---|---|
| public default boolean accept(Object sender) Determines whether the action should be performed with the specified
sender object. The
| |
| addPropertyChangeListener | back to summary |
|---|---|
| public void addPropertyChangeListener(PropertyChangeListener listener) Adds a
| |
| getValue | back to summary |
|---|---|
| public Object getValue(String key) Gets one of this object's properties using the associated key. | |
| isEnabled | back to summary |
|---|---|
| public boolean isEnabled() Returns the enabled state of the
| |
| putValue | back to summary |
|---|---|
| public void putValue(String key, Object value) Sets one of this object's properties
using the associated key. If the value has
changed, a | |
| removePropertyChangeListener | back to summary |
|---|---|
| public void removePropertyChangeListener(PropertyChangeListener listener) Removes a
| |
| setEnabled | back to summary |
|---|---|
| public void setEnabled(boolean b) Sets the enabled state of the
| |