Swing y JFC (Java Foundation Classes)

Un objeto Component genera uno o m�s eventos componente justo despu�s de que el componente haya sido ocultado, hecho visible, movido o redimensionado. Un ejemplo de oyente de component podr�a estar en una herramienta de construcci�n de GUI que muestra informaci�n sobre el tama�o del componente seleccionado, y que necesita saber cuando cambia el tama�o del componente. Normalmente no se necesita manejar eventos componente para controlar la distribuci�n b�sica ni el redibujado.

Los eventos component-hidden y component-visible s�lo ocurren como resultados de llamadas al m�todo setVisible de Component. Por ejmplo, una ventana podr�a ser miniaturizada en un icono iconificada) sin que se generar� ning�n evento component-hidden.

.�M�todos de Evento Component

El interface ComponentListener y su correspondiente clase adpatador ComponentAdapter, contienen cuatro m�todos.

void componentHidden(ComponentEvent)
Se le llama despu�s de ocultar el componente esuchado como resultado de una llamada al m�todo setVisible.
void componentMoved(ComponentEvent)
Se le llama cuando el componente escuchado se mueve en relaci�n a su contenedor. Por ejemplo, si se mueve una ventana, genera un evento component-moved, pero el componente que la contiene no lo genera.
void componentResized(ComponentEvent)
Se le llama despu�s de que cambie el tama�o del componente escuchado.
void componentShown(ComponentEvent)
Se le llama despu�s de que componente escuchado se vuelva visible como resultado de una llamada al m�todo setVisible.

.�Ejemplos de Manejo de Eventos Component

El siguiente applet demuestra los eventos component. El applet contiene un bot�n que trae una ventana (JFrame). La ventana contiene un panel que tiene una etiqueta y un checkbox. El checkbox controla si la etiqueta es visible. Cuando abandonamos la p�gina del applet, la ventana desaparece, y reaparece cuando volvemos a la p�gina del applet. El �rea de texto muestra un mensaje cada vez que la ventana, el panel, la etiqueta o el checkbox generan un evento component.

Esta es una imagen del GUI del applet. Para ejecutarlo, pulsa sobre ella. El applet aparecer� en una nueva ventana de tu navegador.

Prueba esto:
  1. Pulsa el bot�n llamado "Start playing...".

    La ventana se desplegar�, generando uno o m�s eventos component-shown y component-moved.

  2. Pulsa el checkbox para ocultar la etiqueta.

    La etiqueta genera un evento component-hidden.

  3. Pulsa de nuevo el checkbox para mostrar la etiqueta.

    La etiqueta genera un evento component-shown.

  4. Minimiza y maxima la ventana que contiene la etiqueta.

    No se obtienen eventos component-hidden ni component-shown. Si queremos ser informados de los eventos de iconificaci�n deber�amos usar un oyente de window.

  5. Cambia el tama�o de la ventana que contiene la etiqueta.

    Veremos los eventos component-resized (y posiblemente) de los cuatro componentes - etiqueta, checkbox, panel y ventana. Si la controlador de distribuci�n de la ventana y el panel no hacen que cada componente sean tan anchos como sea posible, el panel, la etiqueta y el checkbox podr�an no haber sido redimensionados.

El c�digo del applet los puedes encontrar en ComponentEventDemo.java. Aqu� puedes ver s�lo el c�digo relacionado con el manejo de eventos component.

public class ComponentEventDemo ... implements ComponentListener {
    ...
    //where initialization occurs:
        aFrame = new JFrame("A Frame");
        ComponentPanel p = new ComponentPanel(this);
        aFrame.addComponentListener(this);
        p.addComponentListener(this);
    ...

    public void componentHidden(ComponentEvent e) {
	displayMessage("componentHidden event from "
		       + e.getComponent().getClass().getName());
    }

    public void componentMoved(ComponentEvent e) {
	displayMessage("componentMoved event from "
		       + e.getComponent().getClass().getName());
    }

    public void componentResized(ComponentEvent e) {
	displayMessage("componentResized event from "
		       + e.getComponent().getClass().getName());
    }

    public void componentShown(ComponentEvent e) {
	displayMessage("componentShown event from "
		       + e.getComponent().getClass().getName());
    }
}


class ComponentPanel extends JPanel ... {
    ...
    ComponentPanel(ComponentEventDemo listener) {
        ...//after creating the label and checkbox:
        label.addComponentListener(listener);
        checkbox.addComponentListener(listener);
    }
    ...
}

.�La clase ComponentEvent

Cada m�todo de evento Component tiene un s�lo par�metro, un objeto ComponentEvent. La clase ComponentEvent define los siguientes m�todos muy �tiles.

Component getComponent()
Devuelve el componente que gener� el evento. Podemos utilizarlo en lugar del m�todo getSource.

COMPARTE ESTE ARTÍCULO

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