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