Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Васюткина Технология разработки програм java (Горячев).doc
Скачиваний:
140
Добавлен:
23.03.2016
Размер:
1.84 Mб
Скачать

Модель делегирования событий в Java 1.1

Модель событий, применяемая в Java 1.1, подходит для использования в AWT и в Swing. В этой модели каждое событие - это класс, наследуемый от класса java.util.EventObject. Все AWT события наследуются от класса java.awt.AWTEvent. Для удобства различные типы событий AWT помещены в отдельный пакет java.awt.event.

Модель событий базируется на концепции "слушаю события". Объект, ожидающий какое-либо событие, "слушает" его, является event listener. Объект, вырабатывающий событие, (источник события) поддерживает список объектов, ожидающих событие, и оповещает все объекты в списке о его появлении. Источник события имеет методы для добавления объектов, ожидающих события, и методы для удаления таких объектов.

Источник события при возникновении события запускает метод – обработчик события и передает в него объект типа EventObject или производного от него. Для того чтобы запустить нужный метод все объекты типа listener должны реализовывать определенный интерфейс. Интерфейс может определять несколько методов. Например, класс MouseEvent представляет несколько событий: нажатие кнопки, отпускание кнопки, и другие. В таблице 2.1 приводятся тип объекта, интерфейс для его обработки и методы, определяемые в каждом интерфейсе.

Для каждого из интерфейсов, содержащих более одного метода, определен класс-адаптер, который содержит пустые тела методов. Классы-адаптеры имеют имена, такие же, как и имена интерфейсов с заменой Listener на Adapter: например, MouseAdapter, WindowAdapter.

Если Вы реализовали интерфейс или создали класс адаптера, нужно создать объект для того, чтобы он "слушал" событие. Затем зарегистрировать этот объект в источнике события. В AWT источник события всегда компонента: кнопка, список, и т.д. Регистрация делается с помощью методов с именами вида addXXXListener. Удаление объекта из списка слушающих выполняется с помощью removeXXXListener. Здесь XXX - имя типа события, генерируемого источником.

Таблица 2.1.

Класс события, интерфейс и методы для обработки.

Event Class

Listener Interface

Listener Methods

ActionEvent

ActionListener

actionPerformed()

AdjustmentEvent

AdjustmentListener

adjustmentValueChanged()

ComponentEvent

ComponentListener

componentHidden()

 

 

componentMoved()

 

 

componentResized()

 

 

componentShown()

ContainerEvent

ContainerListener

componentAdded()

 

 

componentRemoved()

FocusEvent

FocusListener

focusGained()

 

 

focusLost()

ItemEvent

ItemListener

itemStateChanged()

KeyEvent

KeyListener

keyPressed()

 

 

keyReleased()

 

 

keyTyped()

MouseEvent

MouseListener

mouseClicked()

 

 

mouseEntered()

 

 

mouseExited()

 

 

mousePressed()

 

 

mouseReleased()

 

MouseMotionListener

mouseDragged()

 

 

mouseMoved()

TextEvent

TextListener

textValueChanged()

WindowEvent

WindowListener

windowActivated()

 

 

windowClosed()

 

 

windowClosing()

 

 

windowDeactivated()

 

 

windowDeiconified()

 

 

windowIconified()

 

 

windowOpened()

Таблица 2.2.

Компоненты AWT и типы событий, которые они могут генерировать.

Компонент

События, генерируемые компонентом

Значение

Button

ActionEvent

Пользователь нажал на кнопку

Checkbox

ItemEvent

Пользователь щелкнул на элементе, изменив выбор

CheckboxMenuItem

ItemEvent

Пользователь выбрал пункт из меню

Choice

ItemEvent

Пользователь щелкнул на элементе, изменив выбор

Component

ComponentEvent

Компонент передвинут, изменил размеры, стал видимым или невидимым.

 

FocusEvent

Компонент получил или потерял фокус

 

KeyEvent

Пользователь нажал или отпустил клавишу

 

MouseEvent

Пользователь щелкнул кнопкой мыши, мышь попала в пределы компонента или ушла за его границы, или пользователь тянет объект.

MouseEvent имеет два интерфейса прослушивания, MouseListener и MouseMotionListener.

Container

ContainerEvent

Компонент добавлен или удален из контейнера

List

ActionEvent

Пользователь дважды щелкнул на элементе списка

 

ItemEvent

Пользователь выбрал пункт из списка

MenuItem

ActionEvent

Пользователь выбрал пункт меню

Scrollbar

AdjustmentEvent

Пользователь передвинул движок

TextComponent

TextEvent

Пользователь изменил текст

TextField

ActionEvent

Пользователь закончил редактирование текста

Window

WindowEvent

Окно открыто, или закрыто. или минимизировано, или максимизировано