Программирование на Java

       

Событие 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()); } }

Конструктор класса требует в качестве параметра ссылку на родительский фрейм, без которого не удастся создать 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". Если нажать на нее, откроется файловый диалог. После выбора файла на консоли отображается полный путь к нему.



Содержание раздела