Previous | Next | Trail Map | To 1.1 -- And Beyond! | GUI Changes: The AWT Grows Up


Writing a Container Listener

Container events are generated by a Container just after a component is added to or removed from the container. These events are for notification only -- no container listener need be present for components to be successfully added or removed.

Container Event Methods

The ContainerListener(in the API reference documentation) interface and its corresponding adapter class, ContainerAdapter(in the API reference documentation), contain two methods:
void componentAdded(ContainerEvent)
Called by the AWT just after a component is added to the listened-to container.
void componentRemoved(ContainerEvent)
Called by the AWT just after a component is removed from the listened-to container.

Examples of Handling Container Events

The following applet demonstrates container events. By clicking "Add a button" or "Remove a button", you can add components to or remove them from a panel at the bottom of the applet. Each time a component is added to or removed from the panel, the panel fires off a container event, and the panel's container listener is notified. The listener displays descriptive messages in the text area at the top of the applet.

Since you can't run the applet, here's a picture of it:


Try this:
  1. Click the button labeled "Add a button".
    You'll see a button appear near the bottom of the applet. The container listener (in this example, an instance of ContainerDemo) reacts to the resulting component-added event by displaying "Button #1 was added to java.awt.Panel" at the top of the applet.
  2. Click the button labeled "Remove a button".
    This removes the most recently added button from the panel, causing the container listener to receive a component-removed event.

You can find the applet's code in ContainerDemo.java. Here is the applet's container event handling code:

public class ContainerDemo ... implements ContainerListener ... {
    ...//where initialization occurs:
	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");
    }
    ...
}

You can find more examples of container listeners in the following sections: [LIST GOES HERE]

The ContainerEvent Class

Each container event method has a single parameter: a ContainerEvent(in the API reference documentation) object. The ContainerEvent class defines two useful methods:
Component getChild()
Returns the component whose addition or removal triggered this event.
Container getContainer()
Returns the container that fired this event.


Previous | Next | Trail Map | To 1.1 -- And Beyond! | GUI Changes: The AWT Grows Up