«События». Обработка событий в java 2. Метод handleEvent(), страница 2

Начиная с Java 1.1, изменен (хотя старый и поддерживается) способ обработки событий. Новая модель названа моделью делегирования событий. В соответствии с ней в обработке события участвуют 2 объекта: источник (source) и блок прослушивания (listener - интерфейс для перехвата конкретного вида события от конкретного компонента). Источник – это объект, генерирующий событие ( в случае, когда каким-то образом изменяется его внутреннее состояние), а блок (или несколько блоков) прослушивания – объект, получающий уведомление, о возникновении события, на которое он зарегистрирован одним или несколькими источниками, путем вызова одного из его методов (методов блока прослушивания) для приема и обработки этих уведомлений. Методы, принимающие и обрабатывающие событие определены в наборе интерфейсов, находящихся в пакете java.awt.event. Графические события это: нажатие или перемещение кнопки, ввод символа с клавиатуры, выбор в списке, щелчок мыши и т.д. В качестве источников выступают компоненты, способные генерировать события: управляющие элементы и контейнеры, а также апплет (апплеты – это программы, управляемые событиями), в который включены эти элементы. События описываются подклассами класса EventObject(Objectscr)-суперкласс всех событий, где  scr -объект, генерирующий это событие. Класс EventObjectразмещается в пакете java.util. Класс AWTEvent, определенный в пакете java.awt – является суперклассом всех AWT-событий, которые обрабатываются моделью  делегирования событий.

В роли блока прослушивания может выступать любой класс, реализующий хотя бы один из подклассов интерфейса EventListener, определяемых в пакете java.awt.event.

Для прослушивания событий от мыши реализованы 2 класса:

Интерфейс MouseMotionListener перехватывает события, связанные с перемещением мыши, например, с использованием методов mouseDragged() (перемещение курсора с нажатой левой клавишей (перетаскивание)) и метода mouseMoved() – простое перемещение курсора мыши.

java.util.Eventlistener

-java.awt.event.ComponentListener

 -java.awt.event.ConteinerListener

 -java.awt.event.FocusListener

 -java.awt.event.KeyListener

 -java.awt.event.MouseListener

 -java.awt.event.MouseMotionListener

 -java.awt.event.WindowListener

 -java.awt.event.FctionListener

В интерфейсе MouseListener описаны такие методы как:

mouseClicked(); mousePressed(); mouseReleased();

       mouseEntered();mouseExited();

В новой модели роль блока прослушивания может выполнять дополнительный класс, введенный, например, в состав апплета, реализующий необходимые интерфейсы, следящие за актуальными событиями. В этом классе реализуются методы интерфейсов прослушивания и в случае появления события вызывают соответствующий метод класса реализующего основные функции апплета. Для этого класс прослушивания регистрируется в основном классе в качестве блока прослушивания при помощи метода set<категория_событий>Listener или add<атегория_событий>Listener класса, выступающего в роли источника событий, т.е. в основном классе записать:

My_Listener     my_control;

и затем, например, в методе init() зарегистрировать данный объект как источник событий

public void init ()

{        my_control = new My_Listener (this);

          this.addMouseListener (my_control);

          this.addMouseMotionListener (my_control);

}