Event source and listener : Event Queue « Event « Java






Event source and listener

  

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) {
    listeners.add(l);
  }
  public void removeListener(TestEventListener l) {
    listeners.remove(l);
  }
  public void fireEvent(EventObject o) {
    for (int i = 0; i < listeners.size(); i++) {
      TestEventListener l = (TestEventListener) listeners.get(i);
      l.handleEvent(o);
    }
  }
  public static void main(String[] args) {
    Main pfles = new Main();
    pfles.test();
  }

}

   
    
  








Related examples in the same category

1.Use the Event queue to retrieve eventUse the Event queue to retrieve event
2.Event object has information about an event, that has happened.
3.Register several listeners for one event.
4.ActionEvent.getActionCommand()
5.Adding an InputMap to a Component
6.Multiple sources: A listener can be plugged into several sources.
7.Using an inner ActionListener class.
8.void java.awt.Toolkit.addAWTEventListener(AWTEventListener listener, long eventMask)
9.int java.awt.event.WindowEvent.WINDOW_OPENED
10.JComponent.WHEN_IN_FOCUSED_WINDOW
11.Register action
12.Using EventQueue.invokeLater to start a Swing application