Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java.doc
Скачиваний:
11
Добавлен:
20.04.2019
Размер:
936.45 Кб
Скачать

События

Графический пользовательский интерфейс приложения относится к системам, управляемым по событиям:

– при запуске программы создается пользовательский интерфейс;

– далее приложение ожидает наступления некоторого события, связанного с пользовательским интерфейсом;

– при наступлении события программа выполняет необходимые действия, а затем снова переходит в режим ожидания.

Событием в пользовательском интерфейсе считается

– непосредственное действие пользователя (щелчок или движение мыши, нажатие клавиши),

– изменение состояния какого-либо компонента интерфейса (например, изменение состояния кнопки-переключателя).

При обработке событий в библиотеке Java взаимодействуют три вида объектов:

источник события обычно компонент пользовательского интерфейса

слушатель события объект, которые получает информацию о произошедшем событии

объект-событие содержат в себе информацию о произошедшем событии и источнике этого события

Для обработки событий используется шаблон проектирования "Слушатель" (Observer).

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

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

У одного и того же источника событий может быть несколько слушателей:

Один и тот же объект может являться слушателем у нескольких источников событий:

Для описания объектов-событий используются классы, являющиеся потомками java.awt.AWTEvent.

Каждый класс, описывающий событие, содержит свои специфические методы, позволяющие получить информацию о произошедшем событии.

Некоторые методы класса MouseEvent

int getButton() возвращает номер нажатой кнопки (0, 1, 2, 3)

int getClickCount() возвращает количество нажатий кнопки мыши

Point getPoint() возвращает позицию указателя мыши

Некоторые методы класса KeyEvent

char getKeyChar() возвращает символ, соответствующий нажатой клавише

int getKeyCode() возвращает код нажатой клавиши

boolean isShiftDown()

boolean isControlDown()

boolean isAltDown() возвращают состояние клавиш регистра

Для обработки любого события необходимо:

1. Создать объект-слушатель событий. Объект-слушатель событий должен иметь метод(ы) для обработки требуемого типа событий.

2. Зарегистрировать слушатель событий у предполагаемого источника событий. Каждый источник событий хранит список своих слушателей.

Объекты-слушатели событий должны реализовывать интерфейсы вида ***Listener, соответствующие событиям, например:

ActionListener интерфейс слушателя события-действия

KeyListener интерфейс слушателя события клавиатуры

MouseListener

MouseMotionListener

MouseWheelListener интерфейсы слушателей событий мыши

Все интерфейсы объявлены в пакете java.awt.event

Интерфейсы слушателей событий содержат один или несколько методов, предназначенных для обработки каждого типа событий, например:

void actionPerformed(ActionEvent e) метод для обработки события-действия

void keyPressed(KeyEvent e)

void keyReleased(KeyEvent e)

void keyTyped(KeyEvent e) методы для обработки событий клавиатуры

Пример. Описание обработчика события нажатия на кнопку

class MyButtonClick implements ActionListener {

public void actionPerformed(ActionEvent e) {

// ... обработка нажатия на кнопку ...

}

}

В том случае, когда нет необходимости обрабатывать все типы событий, за основу можно взять классы ***Adapter, содержащие пустые обработчики событий, например:

KeyAdapter класс-обработчик событий клавиатуры

MouseAdapter

MouseMotionAdapter классы-обработчики событий мыши

Все классы-адаптеры объявлены в пакете java.awt.event

Пример. Описание обработчика события мыши

class MyMouseClick extends MouseAdapter {

public void mouseClicked(MouseEvent e) {

// ... обработка клика ...

}

}

Для регистрации слушателей событий у объектов, которые могут быть источниками событий, имеются методы вида add***Listener(), например:

void addActionListener(ActionListener l) добавить слушателя события-действия

void addKeyListener(KeyListener l) добавить слушателя события клавиатуры

void addMouseListener(MouseListener l)

void addMouseMotionListener(MouseMotionListener l)

void addMouseWheelListener(MouseWheelListener l) добавить слушателя событий мыши

и др.

Пример. Регистрация обработчика нажатия на кнопку

MyButtonClick myButtonClick=new MyButtonClick();

Button.addActionListener(myButtonClick);

Если объект-обработчик событий должен иметь возможность обратиться к полям другого объекта (окна), то можно

1. Использовать параметризованный конструктор, параметром которого будет требуемый объект-окно

2. Использовать встроенный класс-обработчик (т.е. класс, объявленный внутри другого класса)

Для удаления слушателя событий используются методы вида remove***Listener(), например:

void removeActionListener(ActionListener l) удалить слушателя события-действия

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]