Añadir eventos a un componente

En las vistas Diseño o Beans de Java se puede añadir un evento a un componente.

Para añadir un evento a un componente:
  1. Pulse el botón derecho del ratón sobre el componente en la vista Beans de Java o Diseño.
  2. En el menú emergente, pulse Eventos. El menú emergente mostrará los eventos preferentes para el componente. Haga lo siguiente:
    • Pulse sobre uno de los eventos preferidos para el componente. El evento se añade al componente. Por ejemplo, para un JFrame, los eventos preferidos son windowClosed y windowOpened.
    • Pulse Añadir eventos para abrir la ventana Añadir eventos.
  3. Si ha abierto la ventana Añadir eventos, se mostrará una lista de los eventos, por categorías, que se pueden elegir. Seleccione el evento que quiera añadir y pulse Finalizar.
    • El diálogo Añadir evento muestra en un árbol todos los eventos disponibles para el componente. El árbol muestra los elementos que están a la escucha de eventos como primer nivel de entrada, y bajo cada entrada del elemento a la escucha se encuentran las respuestas posibles que el evento puede generar.
      diálogo añadir evento
    • El diálogo permite especificar si se quiere crear un elemento a la escucha nuevo o utilizar alguno existente. Cuando se abre el diálogo, analiza los elementos a la escucha existentes y, si encuentra alguno que se pueda reutilizar, lo marca con un icono distinto: clase
evento presente si el elemento a la escucha existente amplía una clase de adaptador, o evento presente en cualquier otro caso. Dentro del propio elemento a la escucha, existen eventos que se muestran con una flecha verde flecha verde y los eventos disponibles se muestran con una flecha incompleta flecha incompleta
    • Se puede especificar si se quiere utilizar o no un elemento a la escucha existente, o bien crear uno nuevo. Cuando se crea uno nuevo, se puede elegir si se quiere extender la clase adaptador o simplemente implementar la interfaz a la escucha. Si no hay opciones que sean de aplicación, los botones de selección estarán inhabilitados. Por ejemplo, si no existen elementos a la escucha, o se selecciona uno pero el evento seleccionado ya está en uso, la opción Utilizar elemento a la escucha existente está inhabilitada. Si no hay clases de adaptador disponibles para el nuevo elemento a la escucha, el botón de selección extiende: ADAPTER_CLASS_NAME está inhabilitado.
    • Si en el diálogo Añadir evento se selecciona propertyChange, se dispondrá de opciones para añadir la llamada de retorno. Se puede crear un nuevo elemento a la escucha que se pueda añadir al JavaBean utilizando el método addPropertyChange(PropertyChangeListener listener). Si se hace esto, el método de llamada de retorno genérico del elemento a la escucha, propertyChange(PropertyChangeEvent event), se utiliza para todos los eventos de propiedad. En algunos JavaBeans (como componentes Swing), el método addPropertyChange(String propertyName, PropertyChangeListener listener) que tiene dos argumentos, está disponible y seleccionado por omisión para su uso con el elemento a la escucha nuevo.

      diálogo añadir evento

      Un elemento a la escucha que se añada utilizando el método de dos argumentos es específico para una propiedad concreta, por lo que no se puede reutilizar para otra propiedad. Un elemento a la escucha que se añada con un método de argumento único tiene una sentencia if que comprueba el nombre de la propiedad antes de procesar la lógica de cada llamada de retorno de la misma, según se muestra a continuación.

      javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
           public void propertyChange(java.beans.PropertyChangeEvent e) {
              if ((e.getPropertyName().equals("font"))) {
                  System.out.println("propertyChange(font)"); 
             }
          }
      });

      Esto permite añadir un PropertyChangeListener con un método de argumento único que se utilizará para más de una propiedad (mediante el uso de varios bloques if{}). 

Cuando se añade un elemento, si existe un elemento a la escucha que se pueda utilizar, se le añade el método de llamada de retorno (callback). Si no, se crea uno nuevo. Para utilizar un nuevo elemento a la escucha, debe ser una clase interna anónima en el JavaBean que implementa la interfaz del elemento a la escucha. Debe tener el cuerpo del método vacío para el método de llamada de retorno (callback), o ampliar la clase adaptador. No debe tener añadido un método existente para la llamada de retorno del evento. Para una propiedad, se reutilizará un PropertyChangeListener siempre que se añada al JavaBean con un método de argumento único addPropertyChange(PropertyChangeListener listener). Si no tuviera código, se añade el proceso de la propiedad.

Si no existiera ningún elemento a la escucha candidato sobre el que se pueda añadir el método de llamada de retorno (callback), se crea uno nuevo. Será una clase interna anónima y, si se ha definido una clase de adaptador para el evento, el elemento a la escucha la ampliará. De otra forma, implementará la interfaz a la escucha. Una vez añadido el evento se crea un método apéndice (stub) con un comentario //TODO (//PENDIENTE). El método apéndice es un indicador del código fuente que se ejecutará cuando se produzca el evento, y el usuario debería cambiarlo para que tuviera el comportamiento deseado. El comentario //TODO aparecerá en la ventana Tareas, y le permite señalar los métodos que no están completos. Esto es así para que posteriormente se puedan localizar y eliminar los comentarios //TODO una vez que se haya escrito la lógica de la llamada de retorno.

En el ejemplo anterior, ya existe el método windowOpened. Si fuera este un elemento a la escucha que extiende al adaptador, se reutilizará el mismo elemento, pues aún no tiene un método windowClosed. Se añade el método windowClosed(WindowEvent e), así como el método apéndice y el comentario //TODO, según se muestra a continuación.

this.addWindowListener(new java.awt.event.WindowAdapter() {     
        public void windowClosed(java.awt.event.WindowEvent e) {
         System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed()      
              }      
        public void windowOpened(java.awt.event.WindowEvent e) {         
             callExistingWindowOpenedLogic();     
            }  
});

En modalidad experto, los eventos aún se pueden añadir al JavaBean según se muestra a continuación, pero también se pueden añadir a un elemento a la escucha en el árbol Beans de Java. El menú Eventos muestra todos los métodos de llamada de retorno de evento, y los que ya estén en uso se inhabilitan.

ventana añadir cerrada

Para un PropertyChangeListener el menú emergente muestra todas las propiedades enlazadas en el JavaBean. Si ya se estuviera utilizando alguna por parte del PropertyChangeListener, se inhabilitan.

escucha de cambio de propiedad

Un elemento a la escucha que se añada con un método de argumento único tiene una sentencia if que comprueba el nombre de la propiedad antes de procesar la lógica de cada llamada de retorno de la misma, según se muestra a continuación.

javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
    public void propertyChange(java.beans.PropertyChangeEvent e) {         
             if ((e.getPropertyName().equals("font"))) {             
                   System.out.println("propertyChange(font)");         
             }     
          }  
    });

Esto permite añadir un PropertyChangeListener con un método de argumento único que se utilizará para más de una propiedad (mediante el uso de varios bloques if{}) y cuando se añade la segunda llamada de retorno de propiedad y subsiguientes, se añaden bloques if{} nuevos.

Si se añade propertyChangeListener al JavaBean utilizando el método de dos argumentos addPropertyChangeListener(String propertyName, PropertyChangeListener listener), es específico para una propiedad concreta, de forma que otra propiedad no lo puede reutilizar. En este caso, todos los hijos del menú Cascada de eventos se inhabilitan.

Tema padre: Gestión de eventos con el editor visual

Conceptos relacionados
La vista Beans de Java

Tareas relacionadas
Supresión de eventos de un componente
Visualización de los eventos de un componente
Visualización del fuente de un evento

(C) Copyright IBM Corporation 1999, 2004. Reservados todos los derechos.