The `Action` interface provides a useful extension to the `ActionListener` interface in cases where the same functionality may be accessed by several controls.
Excerpt from Action API doc
public interface Action extends ActionListener
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.
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.
See the Action Tutorial to get started