7.1 Основы модели событий
Модель управления событиями, которая была в Java версии 1.0, была совершенно другой по сравнению с новыми версиями языка Java - 1.1 и позже. В ранней версии Java, любое взаимодействие пользователя с Java приложением или апплетом генерировало объект класса Событие - Event. Любые генерирующиеся события, ошибки и исключения обрабатывались набором предопределенных методов. Эти методы были определены в соответствующих классах и подклассах и при необходимости могли быть переопределены пользователем для выполнения какого-либо иного действия.
Новая версия языка основывается на модели делегирования событий. Основа модели делегирования событий очень проста: источник событий генерирует события и посылает их одному или нескольким слушателям. Мы обсудим эту модель в другом разделе. Сейчас же сконцентрируемся на обсуждении основных концепций управления событиями.
Microsoft Foundation Classes (MFC) и Java Foundation Classes (JFC) две популярных библиотеки классов. MFC это библиотека классов языка C++ для разработки программ под Windows. Классы приложений наследуются от классов MFC. Java Foundation Classes (JFC) программное обеспечение, расширяющее Abstract Window Toolkit (AWT), добавлением классов, обеспечивающих всестороннюю поддержку графического пользовательского интерфейса.
7.1.1 Что такое событие?
В программировании графического пользовательского интерфейса (GUI) Событие - это объект, описывающий изменение состояния источника события. Взаимодействие с элементами GUI приводит к генерации события. Любые действия с объектами GUI такие как, нажатие на кнопку, щелчок мыши, нажатие на клавиши клавиатуры приводят к генерации событий. Поэтому прямое или косвенное взаимодействие с элементами GUI, клавиатурой, мышью генерирует Событие. События могут генерироваться и в других случаях таких как, истечение времени по таймеру, начало и прекращение взаимодействия с экземпляром приложения, подтверждение или откат транзакции и другие.
Java AWT связывается при возникновении каких-либо действий с програмой, используя События и вызывая соответствующие методы для их обработки. Ранняя версия - Java 1.0 AWT управляла событиями, используя два метода -
action() и handleEvent(). Action() - метод, имеющий три параметра - событие, х и у координаты в которых произошло событие.
handleEvent() метод, вызываемый для объекта. Объект события создается и передается во время исполнения. Однако, мы расскажем о новой Модели Делегирования Событий, где Событие может передаваться от источника к слушателю. Итак, сначала мы рассмотрим источники событий и слушателей для понимания идеи модели делегирования событий.
7.1.2 Источники событий
Источник события - это объект, который генерирует события. Когда внутреннее состояние объекта изменяется, он генерирует событие. Один источник событий может генерировать несколько видов Событий. Источник может регистрировать слушателей. Слушателю дается право на прием событий определенного типа. Источник событий имеет набор методов для регистрации одного или нескольких слушателей. Каждый тип событий имеет свой метод для регистрации. Общая форма методов:
public void addListener (TypeListener e). Здесь,
ТипСобытия имя события, параметр е -объектная ссылка на слушателя событий. Например,
addKeyListener () метод регистрирующий события клавиатуры. Когда слушатели зарегистрированы, они получают уведомление, когда источник событий генерирует событие. Это и есть широковещание события. Некоторые источники позволяют зарегистрировать, только одного слушателя. В противном случае произойдет выброс исключения, чтобы этого не произошло необходимо использовать метод set<
TunCoбытия>Listener . В этом случае вещание будет производится только одному слушателю.
Примечание: Слушатель событий - это объект, которому сообщается о генерации событий источником. Слушатель событий - это объект класса, который реализует специальный интерфейс - интерфейс слушателя.
Для удаления слушателя, который не отвечает на события, источник имеет метод
rеmоveТипСпушателя(типСпушателя е). Например, для удаления слушателя событий клавиатуры -
removeKeyListener().
Резюме работы источника событий в модели делегирования событий.
Источник событий - объект, регистрирующий одного или нескольких слушателей.
Источник событий посылает оповещение всем зарегистрированным слушателям о случившемся событии.
Слушатели событий используют объект События для получения дополнительной информации и определения действий по реакции на событие.