The Listener pattern is commonly used in the AWT since JDK 1.1. In fact, the Listener has been the base for the event handling mechanism for UI events in Java. The Listener pattern also provides the foundation for Java’s component model, Java Bean. The pattern is based on these simple concepts: events, event producer, and event listener.
Events are messages that are sent from one object to another. The component that sends the event is said to “fire” the event, while the component that receives the event is said to “handle” the event. An event producer is a class that fires events. It also has the ability to add and delete event listeners (components that receive events). Event listeners, also known as event consumers, “listen” for an event. In programmatic terms, a method on the event listener object is called when an event that it is listening for is fired.
The base class that defines an event in Java is called java.util.EventObject. This is extended by applications to define user-defined events. All event objects should extend this class. An event producer/source implements methods that allow the event listeners to register and unregister its interest in the event that it produces. An event listener in Java is any class that implements the java.util.Eventlistener interface. The EventListener interface is an empty (tag or marker) interface that doesn’t contain any methods. A class that implements this interface should typically provide a method that should be called when the event listener object receives an event.
The Tips “Using the EventObject Class”, “Writing an Event Producer”, and “Implementing the EventListener Interface” show how to use the Listener pattern.