Swing y JFC (Java Foundation Classes)

Los eventos Internal frame son a los JInternalFrame lo que los eventos window son a los JFrame. Al igual que los eventos window, los eventos internal frame notifican a sus oyentes que la "window" ha sido mostrada por primera vez, ha sido eliminada, iconificada, maximizada, activada o desactivada. Antes de usar este tipo de eventos debemos familiarizarnos con los Oyentes de Window.

.�M�todos de Evento Internal Frame

El interface InternalFrameListener y su correspondiente clase adaptador, InternalFrameAdapter, contienen estos m�todos.

void internalFrameOpened(InternalFrameEvent)
Se le llama despu�s de el internal frame escuchado se muestre por primera vez.
void internalFrameClosing(InternalFrameEvent)
Se le llama en respuesta a una petici�n del usuario de que el internal frame esuchado sea cerrado. Por defecto , JInternalFrame oculta la ventana cuando el usuario lo cierra. Podemos usar el m�todo setDefaultCloseOperation de JInternalFrame para especificar otra opci�n, que puede ser DISPOSE_ON_CLOSE o DO_NOTHING_ON_CLOSE (ambas definidas en WindowConstants, un interface que implementa JInternalFrame). O implementando un m�todo internalFrameClosing el oyente del internal frame, podemos a�adir un comportamiento personalizado (como mostrar un d�alogo o salvar datos) para cerrar un internal frame.
void internalFrameClosed(InternalFrameEvent)
Se le llama despu�s de que haya desaparecido el internal frame escuchado.
void internalFrameIconified(InternalFrameEvent)

void internalFrameDeiconified(InternalFrameEvent)

Se les llama despu�s de que el internal frame escuchado sea iconificado o maximizado, respectivamente.
void internalFrameActivated(InternalFrameEvent)

void internalFrameDeactivated(InternalFrameEvent)

Se les llama despu�s de que el internal frame escuchado sea activado o desactivado, respectivamente.

.�Ejemplos de Manejo de Eventos InternalFrame

La aplicaci�n mostada en la siguiente figura demuestra el uso de eventos internal frame. La aplicaci�n escucha eventos internal frame desde el frame Event Generator, mostrando un mensaje que describe cada evento.

Prueba esto:
  1. Compila y ejecuta InternalFrameEventDemo. El fichero fuente es InternalFrameEventDemo.java.
  2. Despliega la ventana Evento Generator pulsando el bot�n de la parte superior del applet.

    Deber�as ver un mensaje "Internal frame opened" en el �rea de display.

  3. Prueba varias cosas para ver que sucede. Por ejemplo, pulsa el Event Generator para activarlo. Pulsa el Event Watcher para desactivar el Event Generator. Pulsa la decoraci�n de la ventana Event Generator para iconificara, maximizarla y cerrarla.

    Puedes ver la p�gina C�mo escribir un Oyente de Window para m�s informaci�n sobre los tipos de eventos que ver�s.

Aqu� est� el c�digo que maneja los eventos de internal frame.

public class InternalFrameEventDemo ...
		     implements InternalFrameListener ... {
    ...
    protected void createListenedToWindow() {
	listenedToWindow = new JInternalFrame("Event Generator",
					      true,  //resizable
					      true,  //closable
					      true,  //maximizable
					      true); //iconifiable
	listenedToWindow.setDefaultCloseOperation(
				WindowConstants.DISPOSE_ON_CLOSE);
	...
    }

    public void internalFrameClosing(InternalFrameEvent e) {
	displayMessage("Internal frame closing", e);
    }

    public void internalFrameClosed(InternalFrameEvent e) {
	displayMessage("Internal frame closed", e);
	listenedToWindow = null;
    }

    public void internalFrameOpened(InternalFrameEvent e) {
	displayMessage("Internal frame opened", e);
    }

    public void internalFrameIconified(InternalFrameEvent e) {
	displayMessage("Internal frame iconified", e);
    }

    public void internalFrameDeiconified(InternalFrameEvent e) {
	displayMessage("Internal frame deiconified", e);
    }

    public void internalFrameActivated(InternalFrameEvent e) {
	displayMessage("Internal frame activated", e);
    }

    public void internalFrameDeactivated(InternalFrameEvent e) {
	displayMessage("Internal frame deactivated", e);
    }

    void displayMessage(String prefix, InternalFrameEvent e) {
	String s = prefix + ": " + e.getSource(); 
	display.append(s + newline);
    }

    public void actionPerformed(ActionEvent e) {
	if (e.getActionCommand().equals(SHOW)) {
	    ...
	    if (listenedToWindow == null) {
	        createListenedToWindow();
	        listenedToWindow.addInternalFrameListener(this);
	        ...
	    }
	} 
	...
    }
}

.�La clase InternalFrameEvent

Cada m�todo de evento internal frame tiene un s�lo par�metro: un objeto InternalFrameEvent. La clase InternalFrameEvent generalmente no define m�todos �tiles. Para obtener el internal frame que gener� el evento, se usa el m�todo getSource, que InternalFrameEvent hereda de EventObject.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR