Escribir un Oyente de Container

Los eventos de Container son genrados por un Container justo después de que sea añadido o eliminado algún componente. Estos eventos són sólo para notificación -- no se necesita que esté presente ningún oyente de Container para que los componetes sean añadidos o eliminados satisfactoriamente.

Métodos de Eventos de Container

El interface ContainerListener y su correspondiente clase adaptador, ContainerAdapter, contienen dos métodos:
void componentAdded(ContainerEvent)
Llamado por el AWT justo después de que se haya añadido un componente al contenedor.
void componentRemoved(ContainerEvent)
Llamado por el AWT justo despues de que se haya eliminado un componente del contenedor.

Ejemplos de Manejo de Eventos de Container

El siguiente applet demuestra los eventos de container. Pulsando sobre los botones de "Add a button" o "Remove a button", puedes añadir o eliminar componentes en el panel que hay debajo del applet. Cada vez que un componente es añadido o eliminado, el panel dispara un evento de cotainer, y se le notifica al panel oyente. El oyente mustra un mensaje descriptivo en el área de texto que hay encima del applet.


Intena esto:
  1. Pulsa el botón llamado "Add a button".
    Verás que aparece un botón en la parte inferior del applet. El contenedor oyente (en este ejemplo, un ejemplar de ContainerDemo) reaciona al evento de añadir un componente mostrando el mensaje "Button #1 was added to java.awt.Panel" en la parte superior del applet.
  2. Pulsa el botón llamado "Remove a button".
    Esto elimina el último botón añadido al panel, haciendo que el oyente reciba un evento de componente eliminado.

Puedes encontar el código de este applet en ContainerDemo.java. Aquí tienes el código de manejo de eventos del applet:

public class ContainerDemo ... implements ContainerListener ... {
    ...//Donde ocurra la inicialización:
	buttonPanel = new Panel();
	buttonPanel.addContainerListener(this);
    ...
    public void componentAdded(ContainerEvent e) {
	displayMessage(" added to ", e);
    }

    public void componentRemoved(ContainerEvent e) {
	displayMessage(" removed from ", e);
    }

    void displayMessage(String action, ContainerEvent e) {
	display.append(((Button)e.getChild()).getLabel()
		       + " was"
		       + action
		       + e.getContainer().getClass().getName()
		       + "\n");
    }
    ...
}

La clase ContainerEvent

Cada método de evento de contenedor tiene un sólo parámetro: un objeto ContainerEvent La clase ContainerEvent define dos métodos útiles:
Component getChild()
Devuelve el componente cuya adición o eliminación disparo el evento.
Container getContainer()
Devuelve el contenedor que disparó el evento.


Ozito