Иллюстрированный самоучитель по Java

Обработка событий

В двух предыдущих главах мы написали много программ, создающих интерфейсы, но, собственно, интерфейса, т. е. взаимодействия с пользователем, эти программы не обеспечивают. Можно щелкать по кнопке на экране, она будет "вдавливаться" в плоскость экрана, но больше ничего не будет происходить. Можно ввести текст в поле ввода, но он не станет восприниматься и обрабатываться программой. Все это происходит из-за того, что мы не задали обработку действий пользователя, обработку событий.

Событие (event) в библиотеке AWT возникает при воздействии на компонент какими-нибудь манипуляциями мышью, при вводе с клавиатуры, при перемещении окна, изменении его размеров.

Объект, в котором произошло событие, называется источником (source) события.

Все события в AWT классифицированы. При возникновении события исполняющая система Java автоматически создает объект соответствующего событию класса. Этот объект не производит никаких действий, он только хранит все сведения о событии.

Во главе иерархии классов-событий стоит класс Eventobject из пакета java.utii – непосредственное расширение класса object. Его расширяет абстрактный класс AWTEvent из пакета java.awt – глава классов, описывающих события библиотеки AWT. Дальнейшая иерархия классов-событий показана на рис. 12.1. Все классы, отображенные на рисунке, кроме класса AWTEvent, собраны в пакет java.awt.event.

Иллюстрированный самоучитель по Java › Обработка событий › Обработка событий
Рис. 12.1. Иерархия классов, описывающих события AWT

События типа ComponentEvent, FbeusEvent, KeyEvent, MouseEvent возникают во всех компонентах.

А события типа ContainerEvent – только в контейнерах: Container, Dialog, FileDialog, Frame, Panel, ScrollPane, Window.

События типа WindowEvent возникают только в окнах: Frame, Dialog, FileDialog, Window.

События типа TextEvent генерируются только в контейнерах Textcomponent, TextArea, TextField.

События типа ActionEvent проявляются только в контейнерах Button, List, TextField.

События типа ItemEvent возникают только в контейнерах Checkbox, Choice, List.

Наконец, события типа AdjustmentEvent возникают только в контейнере Scrollbar.

Узнать, в каком объекте произошло событие, можно методом getsource() класса Eventobject. Этот метод возвращает тип object.

В каждом из этих классов-событий определен метод paramstring (), возвращающий содержимое объекта данного класса в виде строки string. Кроме того, в каждом классе есть свои методы, предоставляющие те или иные сведения о событии. В частности, метод getioo возвращает идентификатор (identifier) события – целое число, обозначающее тип события. Идентификаторы события определены в каждом классе-событии как константы.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.