The
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:
- One or more text strings that describe the function. These strings
can be used, for example, to display the flyover text for a button
or to set the text in a menu item.
- One or more icons that depict the function. These icons can be used
for the images in a menu control, or for composite entries in a more
sophisticated user interface.
- The enabled/disabled state of the functionality. Instead of having
to separately disable the menu item and the toolbar button, the
application can disable the function that implements this interface.
All components which are registered as listeners for the state change
then know to disable event generation for that item and to modify the
display accordingly.
Certain containers, including menus and tool bars, know how to add an
Action
object. When an
Action
object is added
to such a container, the container:
- Creates a component that is appropriate for that container
(a tool bar creates a button component, for example).
- Gets the appropriate property(s) from the
Action
object to
customize the component (for example, the icon image and flyover text).
- Checks the initial state of the
Action
object to determine
if it is enabled or disabled, and renders the component in the
appropriate fashion.
- Registers a listener with the
Action
object so that is
notified of state changes. When the Action
object changes
from enabled to disabled,
or back, the container makes the appropriate revisions to the
event-generation mechanisms and renders the component accordingly.
For example, both a menu item and a toolbar button could access a
Cut
action object. The text associated with the object is
specified as "Cut", and an image depicting a pair of scissors is specified
as its icon. The
Cut
action-object can then be added to a
menu and to a tool bar. Each container does the appropriate things with the
object, and invokes its
actionPerformed
method when the
component associated with it is activated. The application can then disable
or enable the application object without worrying about what user-interface
components are connected to it.
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
Action
s where their benefits
are desired, and use simple
ActionListener
s elsewhere.
ACCELERATOR_KEY
public static final String ACCELERATOR_KEY
The key used for storing a KeyStroke
to be used as the
accelerator for the action.
ACTION_COMMAND_KEY
public 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
.
DEFAULT
public static final String DEFAULT
Not currently used.
LONG_DESCRIPTION
public static final String LONG_DESCRIPTION
The key used for storing a longer String
description for the action, could be used for context-sensitive help.
MNEMONIC_KEY
public static final String MNEMONIC_KEY
The key used for storing a KeyEvent
to be used as
the mnemonic for the action.
NAME
public static final String NAME
The key used for storing the String
name
for the action, used for a menu or button.
SHORT_DESCRIPTION
public static final String SHORT_DESCRIPTION
The key used for storing a short String
description for the action, used for tooltip text.
SMALL_ICON
public static final String SMALL_ICON
The key used for storing a small Icon
, such
as ImageIcon
, for the action, used for toolbar buttons.