Eventos de Usuario: WindowListener - Adaptadores de Clase

WindowListener

Los eventos de ventana van a ser disparados tanto por contenedores JFrame, Frame y window. Nos informan sobre cambios en las mismas como redimenzionarlos, cerrarlos, abrirlos, minimizar, restaurar, etc. Hay que implementarlos mediante la interface "WindowListener" y agregando el vigilante addWindowListener() a los contenedores, además de los 6 métodos que contiene.


java.awt.event

Interface WindowListener

Métodos:

  • void windowActivated(WindowEvent e)
    • Se invoca cuando la ventana está configurada para ser una ventana activa.
  • void windowClosed(WindowEvent e)
    • Se invoca cuando una ventana se ha cerrado cuando se pulsa en una forma de cierre que la misma contiene.
  • void windowClosing(WindowEvent e)
    • Se invoca cuando el usuario intenta cerrar la ventana desde un método de cierre propio de la ventana.
  • void windowDeactivated(WindowEvent e)
    • Se invoca cuando una ventana ya no está activa.
  • void windowDeiconified(WindowEvent e)
    • Se invoca cuando una ventana se cambia de un minimizado a un estado normal.
  • void windowIconified(WindowEvent e)
    • Se invoca cuando una ventana se cambia de una normal a un estado minimizado.
  • void windowOpened(WindowEvent e)
    • Se invoca la primera vez que una ventana se hace visible.

Class WindowEvent

java.lang.Object
java.util.EventObject
java.awt.AWTEvent
java.awt.event.ComponentEvent
java.awt.event.WindowEvent

Métodos:

entre otros:
  • public int getNewState()
    • Para eventos WINDOW_STATE_CHANGED devuelve un entero que representa el nuevo estado de la ventana. El estado se representa como una máscara de bit a bit.
  • public int getOldState()
    • Para eventos WINDOW_STATE_CHANGED devuelve el estado anterior de la ventana.
  • public Window getOppositeWindow()
    • Devuelve la otra ventana involucrada en este focus o en la activación de cambio.
  • public Window getWindow()
    • Devuelve el creador de este evento.

Ejemplo de los tutoriales de Java

No será de lo más pedagógico del mundo, es decir siempre obtenes el componente o contenedor que genera el evento y lo muestra tal cual en un area de texto cuando realizamos algún cambio, pero bueno aqui esta.


Adaptadores de Clase

Uno de los inconvenientes de implementar interfaces es que hay que poner en nuestro código todos sus métodos de manera obligatoria en especial si queremos implementar sólo un método, los demás podemos dejarlo perfectamente en blanco y funciona. En interfaces como WindowListener que contiene 6 métodos y más aún sí implementamos más de una interface... la labor de meter código basura se vuelve tediosa!.

Por suerte en Java existe los clases llamdas adaptadores de clase para implementar aquellos métodos de las interfaces que nos interese. Estas clases pertenecen a el paquete "java.awt.event" y son los siguientes adaptadores son:

ActionListener sólo cuenta con el método ActionPerformed(ActionEvent e), ItemListener cuenta con itemStateChanged(itemEvent e), TextListener tiene el método textValueChanged(TextEvent) y AdjustmentListener tiene adjustmentValueChanged(AdjustmentEvent e) todos tiene un solo método para lo cual no necesita simplificación, si lo implementas lo usas sin más.

La lógica de este sistema de adaptadores de clase está en que son clases para ser heredadas y hay que recordar que en java la herencia es simple, es decir solo hay una clase padre. Por eso si veniamos heredando de JFrame para hacer nuestras GUIs ahora hay que crear un objeto JFrame para poder usar estos adaptadores.

  • public MiClase extends KeyAdapter

Ahora heredamos estos métodos y solo sobreescribimos el que nos interese, los que no queremos utilizar no podemos nada porque se heredan vacios de la superclase.

No hay comentarios:

Publicar un comentario