Los eventos Windows son generados por una ventana justo despu�s de que sea abierta, cerrada, iconificada, desiconificada, activada o desactivada. Abrir una ventana significa mostrarla por primera vez; cerrarla significa eliminarla de la ventana. Iconificarla significa sustiuirla por un peque�o icono en el escritorio; desiconificarla significa lo contrario. Una ventana es activada si uno de sus componentes tiene el foco del teclado; la desactivaci�n ocurre cuando la ventana y todos sus componentes pierden el foco del teclado.
El uso m�s com�n de los oyentes de windows es cerrar ventanas. Si un programa no maneja los eventos de window-closing, entonces nada sucede cuando el usuario intenta cerrarla. Una aplicaci�n que tenga una s�la ventana podr�a reaccionar a un evento window-closing saliendo del programa. Otros programas normalmente reaccionar�n a los eventos window-closing eliminado la ventana o haci�ndola invisible. Puedes ver C�mo crear Frames donde hay un ejemplo de un manejador de eventos window-closing.
Nota: Si utilizamos la clase JFrame de swing, podr�amos no necesitar escribir un oyente de window. Puedes ver C�mo crear Frames para ma�s informaci�n sobre c�mo la clase JFrame proporciona un manejo autom�tico de los eventos window-closing. |
Otros uso com�n de los oyentes de window es parar los threads y liberar recursos cuando una ventana es iconificada, y arracarlos otra vez cuando es desiconificada. De esta forma, podemos evitarel uso innecesario del procesador o de otros recursos. Por ejemplo, cuando una ventana que contiene una animaci�n es iconificada, deber�a parar su thread de animaci�n para liberar cualquier buffer. Cuando la ventana es desiconificada se puede arrancar el thread de nuevo y recrear los buffers.
Si queremos ser notificados cuando una ventana se hace visible o se oculta, deber�amos registrar un oyente de component sobre la ventana.
�M�todos de evento Window
El interface WindowListener y su correspondiente clase adaptadora, WindowAdapter, conteniendo estos m�todos.
- void windowOpened(WindowEvent)
- Llamado justos despu�s de que la vetana escuchadas sea mostrada por primera vez.
- void windowClosing(WindowEvent)
- Llamada en respuesta a una petici�n de usuario de que la ventana escuchada sea cerrada. Para cerrar realmente la ventana, el oyente deber�a invocar a los m�todos dispose o setVisible(false) de window.
- void windowClosed(WindowEvent)
- Llamado justo despu�s de que la ventana escuchada sea cerrada.
- void windowIconified(WindowEvent)
void windowDeiconified(WindowEvent)
- Llamado justo despu�s de que la ventana escuchada sea iconificada o desiconificada, respectivamente.
- void windowActivated(WindowEvent)
void windowDeactivated(WindowEvent)
- Llamado justo despu�s de que la ventana escuchada sea activada o desactivada, respectivamente.
�Ejemplos de manejo de eventos de Window
El siguiente applet desmuestra los eventos windows. Pulsando el bot�n del applet, podr�s traer una peque�a ventana. La clase controladora escucha los eventos window de la ventana, mostrando un mensaje siempre que detecte uno. Puedes encontrar el c�digo del applet en WindowEventDemo.java.
Esta es una imagen del GUI del applet. Para ejecutar el applet, pulsa sobre ella. El applet aparecera en una nueva ventana del navegador..
Prueba esto:
|
Aqu� tienes el c�digo de manejo de eventos del applet.
public class WindowEventDemo ... implements WindowListener { ...//where initialization occurs: //Create but don't show window. window = new JFrame("Window Event Window"); window.addWindowListener(this); window.getContentPane().add( new JLabel("The applet listens to this window for window events."), BorderLayout.CENTER); window.pack(); } public void windowClosing(WindowEvent e) { window.setVisible(false); displayMessage("Window closing", e); } public void windowClosed(WindowEvent e) { displayMessage("Window closed", e); } public void windowOpened(WindowEvent e) { displayMessage("Window opened", e); } public void windowIconified(WindowEvent e) { displayMessage("Window iconified", e); } public void windowDeiconified(WindowEvent e) { displayMessage("Window deiconified", e); } public void windowActivated(WindowEvent e) { displayMessage("Window activated", e); } public void windowDeactivated(WindowEvent e) { displayMessage("Window deactivated", e); } void displayMessage(String prefix, WindowEvent e) { display.append(prefix + ": " + e.getWindow() + newline); } ... }
Aqu� tienes algunos ficheros fuente que contienen oyentes de window.
�La clase WindowEvent
Cada m�todo de evento Window tiene un s�lo par�metros: un objeto WindowEvent.
- Window getWindow()
- Devuelve la ventana que gener� el evento. Podemos usarlo en lugar del m�todo getSource.