## Escribir un Oyente de Ventana

Los eventos de ventana son generados por una Ventana justo después de que la ventana sea abierta, cerrada, iconificada, desiconificada, activada o desactivada. Abrir una ventana significa hacerla visible en la pantalla; cerrarla significa eliminar la ventana de la pantalla. Iconificarla significa sustituir la ventana por un pequeño icono en el escritorio, desiconificarla significa los contrario. Una ventana es activada si uno de sus componentes obtiene el foco del teclado; la desactivación ocurre cuando la ventana o uno de sus componente pierdan el foco del teclado.

Probablemente el uso más común de los oyentes de ventana es para cerrar ventanas. Si un programa no maneja los eventos de cerrar ventana, no sucederá nada cuando el usuario intente cerrarla. Una aplicación que consiste en una sóla ventana podría reaccionar a los eventos de cerrar ventana saliendo de la aplicación. Un applet u otro programa en el que existan más de una ventana normalmente llama al método dispose para cerrar la ventana.

Otro uso común de los oyentes de ventanas es parar los threads y liberar los recursos cuando una ventana es inconificada, y para arrancar de nuevo cuando la ventana se agranda de nuevo. De esta forma, podrás evitar la utilización innecesaria del procesador u otros recursos. Por ejemplo, un programa que realiza contínuas animaciones, no es útil cuando la ventana no es visible, por eso debería liberar los recursos del sistema cuando está inconificada. Específicamente, debería parar el thread de animación y liberar cualquier gran buffer cuando la ventana es iconificada, y arrancar el thread de nuevo y recrear los bufferes cuando la ventana se desiconificada.

#### Métodos de Eventos de Ventana

> El interface WindowListener y su correspondiente clase adaptador, WindowAdapter, contienen siete métodos:

> void windowOpened(WindowEvent)
>   Llamado por el AWT justo después de que la ventana escuchada haya sido abierta por primera vez [o mostrada después de haber sido cerrada].

> void windowClosing(WindowEvent)
>   Llamado por el AWT en respusta a una petición del usuario de que la ventana escuchada sea cerrada. Para cerrar realmente la ventana, el oyente debe llama al método dispose de la ventana.

> void windowClosed(WindowEvent)
>   Llamada por el AWT justo después de que la ventana escuchada haya sido cerrada.

> void windowIconified(WindowEvent)
> void windowDeiconified(WindowEvent)
>   Llamados justo después de que la ventana escuchada haya sido iconificada o desiconificada, respectivamente.

> void windowActivated(WindowEvent)
> void windowDeactivated(WindowEvent)
>   Llamada por el AWT justo después de que la ventana escuchada sea activada o desactivada, respectivamente.

#### La clase WindowEvent

> Cada método de evento de ventana tiene un sólo parámetro: un objeto WindowEvent. La clase WindowEvent define un método útil, getWindow, que devuelve la ventana que generó el evento.

Ozito