## Cómo escribir un Oyente de Container

El eventos container son generados por un Container justo después de que se haya añadido o eliminado un componente. Estos eventos son sólo para notificación -- no es necesario que esté presente un oyente de container para los componente sean añadidos o eliminados satisfactoriamente.

#### Métodos de Evento Container

> El interface ContainerListener y su correspondiente clase adaptadora, ContainerAdapter, contienen dos métodos:
> void componentAdded(ContainerEvent)
>   Se le llama después de que se la añada un componente al contenedor escuchado.
> void componentRemoved(ContainerEvent)
>   Se le llama después de que se elimine un componente del contenedor escuchado.

#### Ejemplos de Manejo de Eventos Container

> El siguiene applet demuestra los eventos container. Pulsando sobre "Add a button" o "Remove a button", podemos añadir o eliminar componenten de un panel que hay en la parte inferior del applet. Cada vez que se añade o elimina un componente al panel, éste dispara un evento container, y se le notifica a los oyentes del contenedor del panel. El oyente muestra mensajes descriptivos en el área de texto que hay en la parte superior del applet.

> > 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 "Add a button".
> >    Verás que aparece un botón en la parte inferior del applet. El oyente de container (en este ejemplo, un ejemplar de ContainerEventDemo) reacciona ante el resultante evento component-added mostrando "Button #1 was added to java.awt.Panel" en la parte superior del applet.
> > 2. Pulsa el botón "Remove a button".
> >    Esto elimina el último botón añadido al panel, haciendo que el oyente de container reciba un evento de component-removed.

> Puedes encontrar el código del applet en ContainerEventDemo.java. Aquí está el código que maneja los eventos container:

>     public class ContainerEventDemo ... implements ContainerListener ... {
>         ...//where initialization occurs:
>     	buttonPanel = new JPanel();
>     	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(((JButton)e.getChild()).getText()
>     		       + " was"
>     		       + action
>     		       + e.getContainer().getClass().getName()
>     		       + newline);
>         }
>         ...
>     }

#### La clase ContainerEvent

> Cada método del evento container 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 disparó este evento.
> Container getContainer()
>   Devuelve el contenedor que generó este evento. Se peude usar en lugar del método getSource.

Ozito