Eventos de Java Swing

En el post de hoy vamos a revisar otro concepto relacionado con Java Swing. En esta ocasión nos referimos a los Eventos Swing. Como ya hemos dicho en publicaciones anteriores, se trata de una biblioteca de clases que hoy en día se considera obsoleta. Sin embargo, al igual que ocurre con otras tecnologías antiguas, siempre existe la posibilidad de que nos incorporen al mantenimiento de un sistema clásico. Por tanto, que algo sea obsoleto no significa que no nos lo vayamos a encontrar nunca en nuestra vida laboral: debemos estar siempre preparados para recuperar conocimientos de hace 10 ó 20 años...

 

 

Anteriormente estuvimos hablando de los Componentes Swing y de los Layouts Swing. Ahora nos toca hablar de lo que sería el tercer pilar de esta tecnología: los Eventos Swing. Básicamente, un evento puede definirse como un cambio de estado de un objeto. Desde el punto de vista de la interfaz gráfica, se produce un evento cuando el usuario interactúa con los componentes de la aplicación. Los eventos que se activan pueden ser el clic de un botón, el desplazamiento, la selección de elementos de la lista, el cambio de texto, etc…

 

Elementos de un proceso en Java Swing

 

Para entender completamente en qué consiste un evento, debemos tener claro cuáles son los elementos de un proceso en Java Swing. Son los siguientes:

 

1º) Objeto Fuente: El objeto en el que ocurre un evento es la fuente, y esa fuente es responsable de enviar información sobre el evento al controlador de eventos.

2º) Objeto Evento: Es la notificación desencadenada por la acción sobre el objeto Fuente. Dicha notificación viaja hasta el Listener.

3º) Objeto Oyente: El oyente (Listener) no es más que el controlador de eventos responsable de realizar una acción cuando ocurre un evento. En Java, un oyente es un objeto que espera un evento. Una vez que ocurre el evento, el oyente procesa el evento.

 


 

Eventos de Java Swing


Como ya os podéis imaginar, en la biblioteca de Java Swing existen multitud de tipos de eventos. Sin embargo, a continuación vamos a tratar de centrarnos en enumerar los que se consideran más importantes. Son los siguientes.

* ActionEvent: Evento de acciones de usuario.

* ComponentEvent: Se trata del padre de todos los eventos de componentes.

* KeyEvent: Evento generado por la pulsación de una tecla.

* WindowEvent: Evento generado por una acción sobre una ventana.

* WindowStateEvent: Evento disparado por el cambio de estado de una ventana. Un cambio de estado de ventana se produce, por ejemplo, cuando la maximizamos o cuando la minimizamos.

* MouseEvent: Evento generado cuando se produce la pulsación de alguno de los botones del ratón.

* FocusEvent: Este evento se genera cuando cambia el foco de un determinado componente. Se dispara el evento cuando, por ejemplo, el componente gana el foco o cuando pierde el foco.

* DocumentEvent: se genera cuando se producen modificaciones en un Documento de texto (JTextComponent).

* ChangeEvent: asociado a un Componente, este evento se dispara cuando se produce un cambio en el Componente.


Para ayudarnos a ubicar cada uno de los tipos de eventos, podemos hacer uso del siguiente diagrama que muestra la jerarquía entre los distintos eventos. Como se aprecia, ayuda a clarificar bastante algunas de las relaciones existentes entre ellos.

 

 

Listeners de Java Swing

 

Para cada tipología de evento de Java Swing, dispondremos un tipo concreto de Listener. Estos objetos oyentes, donde se capturan los eventos generados por los usuarios, son los que utilizaremos para indicar cuál es el proceso correspondiente que tiene que desencadenarse en nuestra aplicación. Por ejemplo, con un ActionListener podemos capturar un clic de ratón de un usuario y desencadenar la apertura de un menú emergente.

En relación con los Componentes, los Listener más importantes son los siguientes:

 

* ActionListener: Cuando se hace clic en un componente registrado, como un botón, se invoca automáticamente el método actionPerformed() del ActionListener y se le envía una notificación en ActionEvent.

* KeyListener: Detección de pulsación de una tecla. Se captura un evento de tipo KeyEvent.

* MouseListener: Detección de pulsación de botones del ratón. Se captura un evento de tipo MouseEvent.

* MouseMotionListener: Detección de desplazamiento del ratón.

* FocusListener: Detección de Foco para Componentes. Se captura un evento de tipo FocusEvent.

* DocumentListener: Detección de las modificaciones realizadas en un JTextComponent (JTextField y JTextArea). Se captura un evento de tipo DocumentEvent.

* ChangeListener: Detección de cambio realizado en un componente (por ejemplo, desplazamiento en un JSlider). Se captura un evento de tipo ChangeEvent.


Por otra parte, en relación con las Ventanas, los Listeners más relevantes son los siguientes:

* WindowListener: Detección de una acción realizada sobre una Ventana. Se captura un evento de tipo WindowEvent.

* WindowStateListener: Detección del cambio de estado de una Ventana. Se captura un evento de tipo WindowStateEvent.

* WindowFocusListener: Detección de Foco para Ventana.


Con el resumen anterior ya debemos tener una idea bastante clara de cuáles son los principales Eventos y Listeners que nos podemos encontrar en Java Swing. No voy a negar que existen muchos más tipos de eventos, pero los anteriores nos deberían servir para defendernos en una aplicación Swing. A partir de ahí, ya será cosa nuestra ir profundizando en el conocimiento de nuevos procesos y eventos. Si tengo tiempo, en futuros posts ya iré desgranando un poco más toda esta temática.

 

Pues nada, eso era todo lo que tenía que comentaros en relación con Java Swing. A pesar de la dificultad que rodea a todo lo relacionado con eventos, espero que hoy al menos os hayáis quedado con una visión global de los diferentes Listeners disponibles. Cualquier duda que os surja al respecto, ya sabéis que podéis dejármela aquí abajo.

Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Creación de Webservice SOAP básico

Fichero standalone del Servidor JBoss EAP