Añadir eventos a un componente

Puede añadir un evento a un componente en las vistas Diseño o Beans Java del editor visual para Java.

Para añadir un evento a un componente:
  1. Pulse el botón derecho del ratón sobre el componente en la vista Beans Java o Diseño.
  2. En el menú emergente, pulse Eventos. El menú emergente mostrará los eventos preferentes para el componente. Lleve a cabo uno de los pasos siguientes:
    • 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 desee añadir y, a continuación, pulse Finalizar.
    • El diálogo Añadir evento muestra en un árbol todos los eventos disponibles para el componente. El árbol muestra los escuchas de eventos como primer nivel de entrada, y bajo cada entrada del escucha se encuentran las llamadas de retorno posibles que el evento puede generar.
      diálogo añadir evento
    • Puede utilizar el diálogo para especificar si desea crear un escucha nuevo o utilizar uno existente. Cuando se abre el diálogo, analiza los escuchas existentes y, si encuentra alguno que se pueda reutilizar, lo marca con un icono distinto. Para los escuchas existentes que amplían una clase de adaptador, se utiliza el icono clase de evento presente; de lo contrario, se utiliza evento presente. En el escucha, los eventos existentes se muestran con una flecha verde flecha verde y los eventos disponibles se muestran con una flecha incompleta no evento
    • Puede especificar si se quiere utilizar o no un escucha existente o crear uno nuevo. Cuando se crea uno nuevo, puede elegir si quiere que amplíe la clase adaptador o que tan solo implemente la interfaz de escucha. Si no hay opciones que sean de aplicación, los botones de selección estarán inhabilitados. Por ejemplo, si no existen escuchas, o se selecciona uno pero el evento seleccionado ya está en uso, la opción Utilizar escucha existente está inhabilitada. Si no hay clases de adaptador disponibles para el nuevo escucha, el botón de selección extends: 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 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 escucha, propertyChange(PropertyChangeEvent event), se utiliza para todos los eventos de propiedad. En algunos JavaBeans (como los 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 escucha nuevo.

      diálogo añadir evento

      Un 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 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 en el código siguiente:

      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{}). 

Al añadir un evento, si existe un 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 escucha, debe ser una clase interna anónima en el JavaBean que implementa la interfaz del 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 escucha candidato al 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 escucha la ampliará. De otra forma, implementará la interfaz de escucha. Una vez añadido el evento se crea un método apéndice (stub) con un comentario //TODO. 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 este es un escucha que amplía el adaptador, se le reutilizará, porque aún no tiene un método windowClosed. Se añade el método windowClosed(WindowEvent e) así como el apéndice de método y el comentario //TODO, tal como se muestra aquí:

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 tal como se ha mostrado anteriormente, pero también se pueden añadir a un escucha en el árbol Beans 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 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 en el código siguiente.

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.

Conceptos relacionados
Eventos, escuchas y clases de adaptadores
Vista Beans Java
Tareas relacionadas
Ver los eventos de un componente
Suprimir eventos de un componente
Ver el fuente de un evento

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