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.
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:
- 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.- 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); } ... }
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.