Создание собственного события
Вы можете создать собственное событие и определить источник и условия его возникновения.
В листинге 12.6 приведен пример создания события MyEvent, любезно предоставленный Вячеславом Педаком.
Событие MyEvent говорит о начале работы программы (START) и окончании ее работы (STOP).
Листинг 12.6, Создание собственного события.
// 1. Создаем свой класс события: public class MyEvent extends java.util.EventObjectf protected int id; public static final int START = 0, STOP = 1; public MyEvent(Object source, int id){ super(source); this.id = id; } public int getID(){ return id; } } // 2. Описываем Listener: public interface MyListener extends java.util.EventListener{ public void start{MyEvent e); public void stop(MyEvent e); } // 3. В теле нужного класса создаем метод fireEvent(): protected Vector listeners = new Vector(); public void fireEvent(MyEvent e){ Vector list = (Vector) listeners.clone(); for (int i <strong>=</strong> 0; i < list.sizeO; i++) { MyListener listener = (MyListener)list.elementAt(i); switch(e.getlDO) { case MyEvent.START: listener.start(e); break; case MyEvent.STOP: listener.stop(e); break; } } }
Все, теперь при запуске программы делаем:
fi reEvent(thi s, MyEvent.START);
…а при окончании:
fireEvent(this, MyEvent.STOP);
При этом все зарегистрированные слушатели получат экземпляры событий.