Si tenemos dos o m�s componentes que realizan la misma funcion, podemos considerar la utilizaci�n de un objeto Action para implementar la funci�n. Un objeto Action es un ActionListener que no s�lo proporciona manejo de eventos, sino que tambi�n centraliza el manejo de texto, iconos, y estados de enable de tool bar buttons o it�ms de menu. A�adiendo un Action a un JToolBar, JMenu, o un JPopupMenu, obtendremos las siguientes caracter�sticas.
- Un nuevo JButton (para JToolBar) o JMenuItem (para JMenu y JPopupMenu) que se a�ade autom�ticamente a la barra de herramientas o men�. El bot�n o �tem de men� usa autom�ticamente el icono y el texto especificado por Action.
- Un oyente de action registrado (el objeto Action) para el bot�n o el �tem de men�.
- Manejo centralizado para el estado del bot�n o �tem de men�.
Aqu� hay un ejemplo de uso de un Action para crear un bot�n de una barra de herramientas y un �tem de men� que realizan la misma funci�n.
Action leftAction = new <a class that implements Action>(...); JButton button = toolBar.add(leftAction); JMenuItem menuItem = mainMenu.add(leftAction);
Para que un bot�n o un �tem de men� obtengan todo el beneficio de usar un Action, debemos crear el componente usando el m�todo add(Action) de JToolBar, JMenu, o JPopupMenu. Actualmente no existe ning�n API que permita conectar un objeto Action con un componente ya existente. Por ejemplo, aunque podamos a�adir un objeto Action como oyente de action de cualquier bot�n, el bot�n no ser� notificado cuando la acci�n est� deshabilitada.
Para crear un objeto Action, generalmente se crea una subclase de AbstractAction y luego se ejemplariza. En nuestra subclase debemos implementar el m�todo actionPerformed para reaccionar de forma apropiada cuando ocurra el evento action. Aqu� hay un ejemplo de creacci�n y ejemplarizaci�n de una sublcase AbstractAction.
leftAction = new AbstractAction("Go left", new ImageIcon("images/left.gif")) { public void actionPerformed(ActionEvent e) { displayResult("Action for first button/menu item", e); } };
Aqu� tenemos una imagen de la aplicaci�n que usa actions para implementar caracter�sticas de �rbol.

Prueba esto:
|
Aqu� est� lo que ve el usuario cuando la acci�n "Go left" est� desactivada.

Aqu� est� el c�digo que desactiva la acci�n "Go left".
boolean selected = ...//true if the action should be enabled; false, otherwise leftAction.setEnabled(selected);
Despu�s de crear nuestros componentes usando un Action, podr�amos necesitar personalizarlos. Por ejemplo, podr�amos querer seleccionar el texto del tool-tip del bot�n. O podr�amos personalizar la apariencia de uno de los componentes a�adiendo o borrando el icono o el texto. Por ejemplo, ActionDemo.java no tiene iconos en sus men�s, ni texto en sus botones, ni tool-tips. Aqu� est� el c�digo que consigue esto.
button = toolBar.add(leftAction); button.setText(""); //an icon-only button button.setToolTipText("This is the left button"); menuItem = mainMenu.add(leftAction); menuItem.setIcon(null); //arbitrarily chose not to use icon in menu
�API de Action
Las siguientes tablas listan los m�todos y constructores m�s usados de Action. El API para usar objetos Action se divide en dos categor�as.
�Crear y Usar un action
M�todo o constructor | Prop�sito |
---|---|
AbstractAction()
AbstractAction(String) AbstractAction(String, Icon) |
Crea un objeto Action. A trav�s de los argumentos, podemos especificar el texto y el icono usados en los componentes que controla el action. |
void setEnabled(boolean)
boolean isEnabled() |
Selecciona u obtiene si los componetes que controla el acti�n est�n activados. Llamanado a setEnabled(false) se desactivan todos los componentes que controla. De forma similar, llamando a setEnabled(true) se activan todos los componentes del action. |
�Crear un componente Controlador por un Action
M�todo | Prop�sito |
---|---|
JMenuItem add(Action)
JMenuItem insert(Action, int) (en JMenu y JPopupMenu) |
Crea un objeto JMenuItem y lo pone en el men�. Puedes ver la secci�n C�mo usar Menus para m�s detalles. |
JButton add(Action)
(in JToolBar) |
Crea un objeto JButton y lo pone en la barra de herramientas. Puedes ver la secci�n C�mo usar Tool Bars para m�s detalles. |
�Ejemplos que usan Actions
Actualmente, el �nico ejemplo que usa objetos Action es ActionDemo.java, que se usa y se describe en esta p�gina.