Download the JDK
Search the Tutorials
Hide the TOC
Trail: Creating a GUI with JFC/Swing
Lesson: Writing Event Listeners
Section: Implementing Listeners for Commonly Handled Events
Writing Event Listeners
Introduction to Event Listeners
General Information about Writing Event Listeners
Listeners Supported by Swing Components
Implementing Listeners for Commonly Handled Events
How to Write an Action Listener
How to Write a Caret Listener
How to Write a Change Listener
How to Write a Component Listener
How to Write a Container Listener
How to Write a Document Listener
How to Write a Focus Listener
How to Write an Internal Frame Listener
How to Write an Item Listener
How to Write a Key Listener
How to Write a List Data Listener
How to Write a List Selection Listener
How to Write a Mouse Listener
How to Write a Mouse-Motion Listener
How to Write a Mouse-Wheel Listener
How to Write a Property Change Listener
How to Write a Table Model Listener
How to Write a Tree Expansion Listener
How to Write a Tree Model Listener
How to Write a Tree Selection Listener
How to Write a Tree-Will-Expand Listener
How to Write an Undoable Edit Listener
How to Write Window Listeners
Listener API Table
Solving Common Event-Handling Problems
Home Page > Creating a GUI with JFC/Swing > Writing Event Listeners
How to Write a Container Listener

> Container events are fired 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.

> The following example demonstrates container events. By clicking Add a button or Remove a button, you can add buttons to or remove them from a panel at the bottom of the window. Each time a button is added to or removed from the panel, the panel fires 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 window.

> > Try this:
> > 1. Click the Launch button to run ContainerEventDemo using Java™ Web Start (download JDK 6). Alternatively, to compile and run the example yourself, consult the example index.
> > 2. Click the button labeled Add a button.
> >    You will see a button appear near the bottom of the window. The container listener reacts to the resulting component-added event by displaying "JButton #1 was added to javax.swing.JPanel" at the top of the window.
> > 3. 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 demo's code in `ContainerEventDemo.java`. Here is the demo's container event handling code:

> >     public class ContainerEventDemo ... implements ContainerListener ... {
> >         ...//where initialization occurs:
> >     	buttonPanel = new JPanel(new GridLayout(1,1));
> >     	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);
> >         }
> >         ...
> >     }

### The Container Listener API

> The ContainerListener Interface

> The corresponding adapter class is `ContainerAdapter`.

> Method | Purpose
> --- | ---
> componentAdded(ContainerEvent) | Called just after a component is added to the listened-to container.
> componentRemoved(ContainerEvent) | Called just after a component is removed from the listened-to container.

> The ContainerEvent Class

> Method | Purpose
> --- | ---
> Component getChild() | Returns the component whose addition or removal triggered this event.
> Container getContainer() | Returns the container that fired this event. You can use this instead of the `getSource` method.

### Examples that Use Container Listeners

> The following table lists the examples that use container listeners.

> Example | Where Described | Notes
> --- | --- | ---
> `ContainerEventDemo` | This section | Reports all container events that occur on a single panel to demonstrate the circumstances under which container events are fired.

Previous page: How to Write a Component Listener
Next page: How to Write a Document Listener