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

Каждое событие является подклассом класса java.util.EventObject. События пакета AWT, которые и рассматриваются в данной лекции, являются подклассами java.awt.AWTEvent. Для удобства классы различных событий и интерфейсы слушателей помещены в отдельный пакет java.awt.event.

Прежде, чем углубляться в особенности событий, рассмотрим, как они применяются на практике, на примере простейшего события – ActionEvent.

Событие ActionEvent

Рассмотрим появление события ActionEvent на примере нажатия на кнопку.

Предположим, в нашем приложении создается кнопка сохранения файла:

Button save = new Button('Save'); add(save);

Теперь, когда окно приложения с этой кнопкой появится на экране, пользователь сможет нажать ее. В результате AWT сгенерирует ActionEvent. Чтобы получить и обработать его, необходимо зарегистрировать слушателя. Название нужного интерфейса прямо следует из названия события – ActionListener. В нем всего один метод (в некоторых слушателях их несколько), который имеет один аргумент – ActionEvent.

Объявим класс, который реализует этот интерфейс:

class SaveButtonListener implements ActionListener { private Frame parent; public SaveButtonListener(Frame parentFrame) { parent = parentFrame; } public void actionPerformed(ActionEvent e) { FileDialog fd = new FileDialog(parent, 'Save file', FileDialog.SAVE); fd.setVisible(true); System.out.println(fd.getDirectory()+''+ fd.getFile()); } }pre>

Конструктор класса требует в качестве параметра ссылку на родительский фрейм, без которого не удастся создать FileDialog. В методе actionPerformed класса ActionListener описываются действия, которые необходимо предпринять по нажатию пользователем на кнопку. А именно, открывается файловый диалог, с помощью которого определяется путь сохранения файла. Для нашего примера достаточно вывести этот путь на консоль.

Следующий шаг – регистрация слушателя. Название соответствующего метода снова прямо следует из названия интерфейса – addActionListener.

save.addActionListener( new SaveButtonListener(frame));

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

import java.awt.; import java.awt.event.*; public class Test { public static void main(String args[]) { Frame frame = new Frame('Test Action'); frame.setSize(400, 300); Panel p = new Panel(); frame.add(p); Button save = new Button('Save'); save.addActionListener( new SaveButtonListener(frame)); p.add(save); frame.setVisible(true); } } class SaveButtonListener implements ActionListener { private Frame parent; public SaveButtonListener(Frame parentFrame) { parent = parentFrame; } public void actionPerformed(ActionEvent e) { FileDialog fd = new FileDialog(parent, 'Save file', FileDialog.SAVE); fd.setVisible(true); System.out.println(fd.getDirectory()+ fd.getFile()); } }

После запуска программы появится фрейм с одной кнопкой 'Save'. Если нажать на нее, откроется файловый диалог. После выбора файла на консоли отображается полный путь к нему.

События AWT

Итак, для каждого события AWT определен класс XXEvent, интерфейс XXListener, а в компоненте- источнике событий – метод для регистрации слушателя addXXListener.

Совсем не обязательно, чтобы одно событие могло порождаться лишь одним компонентом как результат какого-то одного действия пользователя. Например, рассмотренный ActionEvent генерируется после нажатия на кнопку ( Button ), после нажатия клавиши Enter в поле ввода текста ( TextField ), при двойном щелчке мыши по элементу списка ( List ) и т.д.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату