
Классы событий
В заключение главы рассмотрим некоторые аспекты, связанные с обработкой событий. Сконцентрируем наше внимание в основном на классах и интерфейсах, которые при этом используются.
Из
предыдущего примера мы уже знаем, что
событие описывается объектом. Обычно
объект события описывает и содержит
информацию об основных параметрах,
связанных с событием и вызвавшим его
компонентом. Если есть объект, то должен
быть и класс. Для возможных событий
описана иерархия классов, в вершине
которой находится класс Event
Object
из пакета java.util.
Основная часть классов событий описана
в пакете java.awt.event.
Это система классов событий, используемых
в библиотеке AWT
для обработки событий. Но несколько
классов событий все же описаны в
библиотеке Swing
— в пакете javax.swing.event.
Некоторые классы событий из пакета
java.awt.event
перечислены в табл. 2.
Класс события |
Описание |
ComponentEvent |
Событие происходит при изменении компонента, скрытии, отображении, изменении размера и прочее |
ContainerEvent |
Событие происходит при добавлении (удалении) компонента в контейнер(из контейнера) |
InputEvent |
Абстрактный суперкласс для классов, описывающих события, связанные с вводом для компонентов |
TextEvent |
Событие происходит при изменении значения текстового поля или текстовой области |
Некоторые классы событий из пакета javax.swing.event (библиотека Swing) представлены в табл. 3.
Табл. 3. Классы событий пакета javax. swing. event
Класс события |
Описание |
AncestorEvent |
Событие связано с добавлением, удалением или перемещением объекта-предка компонента |
CaretEvent |
Событие связано с изменением позиции курсора в текстовом компоненте |
ChangeEvent |
Событие происходит при изменении состояния компонента |
Hypeг1inkEvent |
Событие связано с операциями с гиперссылкой |
ListDataEvent |
Событие происходит при изменении содержимого списка |
ListSelectionEvent |
Событие происходит при выборе (отмене выбора) элемента списка |
MenuEvent |
Событие генерируется при выборе или отмене выбора пункта меню |
TableModelEvent |
Событие связано с изменением модели таблицы |
TreeExpansionEvent |
Событие связано с разворачиванием или сворачиванием дерева |
TreeModelEvent |
Событие связано с изменением модели дерева |
TreeSelectionEvent |
Событие происходит при выборе узла дерева |
На каждое из этих событий предусмотрен специальный обработчик, который специальным образом нужно регистрировать в объекте - потенциальном источнике события (то есть в компоненте графического интерфейса). Для регистрации обработчиков применяются разные методы - в зависимости от типа обрабатываемого исключения..Если известно название для класса исключения, то с большой вероятностью можно восстановить имя метода, с помощью которого в компоненте регистрируется обработчик для соответствующего события. Имя метода, которым регистрируется обработчик, начинается со слова add. Затем следует имя события. Имя события можно узнать по имени класса, если из имени класса события убрать слово Event. После этого в имени метода следует слово Listener. Если мы обрабатываем событие класса СобытиеEvent, то метод для регистрации обработчика такого события в компоненте будет, скорее всего, называться addCo6ытиеListener(). Например, для регистрации обработчика события ActionListener мы использовали метод addActionListener (). Аргументом методу регистрации обработчика, как уже отмечалось, является объект обработчика (об этом несколько позже).
Регистрацию обработчика в компоненте можно отменить. Для этого также есть специальный метод. Имя метода для отмены регистрации получаем из имени метода для регистрации обработчика, если заменим add на remove. Другими словами, метод для отмены регистрации имеет структуру removeCo6btmueListener(). Например - removeActionListener (). Аргументом методу передается объект обработчика (регистрация которого отменяется).