Event source and listener : Event « Swing Event « Java Tutorial

import java.util.ArrayList;
import java.util.EventListener;
import java.util.EventObject;

abstract class TestEventSource {
  public abstract void addListener(TestEventListener l);

  public abstract void removeListener(TestEventListener l);

  public abstract void fireEvent(java.util.EventObject o);

  public void test() {
    addListener(new TestEventListener("A"));
    fireEvent(new java.util.EventObject(this));

class TestEventListener implements EventListener {
  String id;

  public TestEventListener(String id) {
    this.id = id;

  public void handleEvent(EventObject o) {
    System.out.println(id + " called");
    if (id.equals("C")) {
      ((TestEventSource) o.getSource()).removeListener(this);

public class Main extends TestEventSource {
  ArrayList listeners = new ArrayList();
  public void addListener(TestEventListener l) {
  public void removeListener(TestEventListener l) {
  public void fireEvent(EventObject o) {
    for (int i = 0; i < listeners.size(); i++) {
      TestEventListener l = (TestEventListener) listeners.get(i);
  public static void main(String[] args) {
    Main pfles = new Main();


15.1.1.In the event model, there are three participants
15.1.2.Subclasses of AWTEvent
15.1.3.ActionEvent Example with One Button That Demonstrates Sources, Events, and Their ListenersActionEvent Example with One Button That Demonstrates Sources, Events, and Their Listeners
15.1.4.Enabling Other Low-level Events
15.1.5.Event maskEvent mask
15.1.6.Managing Listener Lists with AWTEventMulticasterManaging Listener Lists with AWTEventMulticaster
15.1.7.Semantic Events
15.1.8.Semantic Event Listeners
15.1.9.Managing Listener Lists with EventListenerListManaging Listener Lists with EventListenerList
15.1.10.Writing a Listener as an Anonymous ClassWriting a Listener as an Anonymous Class
15.1.11.Writing a listener as a nested class
15.1.12.Creating a Custom Event
15.1.13.Event object has information about an event, that has happened.
15.1.14.implements AWTEventListener
15.1.15.int java.awt.AWTEvent.getID()
15.1.16.Event source and listener
15.1.17.Process On Swing Event Thread