Иллюстрированный самоучитель по Java

Обработка событий

Теперь напишем класс-контейнер, в котором находятся источники tf и события ActionEvent, и подключим к ним слушателя этого события TextMove, передав им ссылки на него методом addActionListener(), как показано в листинге 12.1.

Листинг 12.1. Обработка события ActionEvent.

import java.awt.*;
import java.awt.event.*;
class MyNotebook extends Frame{
MyNotebook(String title) {
super(title);
TextField tf = new TextField("Вводите текст", 50);
add(tf, BorderLayout.NORTH);
TextArea ta = new TextArea();
ta.setEditable(false);
add(ta);
Panel p = new Panel();
add(p, BorderLayout.SOUTH);
Button b = new Button("Перенести");
p.add(b);
tf.addActionListener(new TextMove(tf, ta));
b.addActionListener(new TextMove(tf, ta));
setSize(300, 200); 
setVisible(true);
}
public static void main(String[] args){
Frame f = new MyNotebook(" Обработка ActionEvent");
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
}
}
// Текст класса TextMove
//…

На рис. 12.2 показан результат работы с этой программой.

В листинге 12.1 в методах addActionListener() создаются два экземпляра класса TextMove – для прослушивания поля tf и для прослушивания кнопки. Можно создать один экземпляр класса TextMove, он будет прослушивать оба компонента:

TextMove tml = new TextMove(tf, ta);
tf.addActionListener(tml);
b.addActionListener(tml);

Но в первом случае экземпляры создаются после наступления события в соответствующем компоненте, а во втором – независимо от того, наступило событие или нет, что приводит к расходу памяти, даже если событие не произошло. Решайте сами, что лучше.

Иллюстрированный самоучитель по Java › Обработка событий › Обработка событий
Рис. 12.2. Обработка события ActionEvent

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

Для этого достаточно реализовать соответствующий интерфейс прямо в классе-контейнере, как показано в листинге 12.2.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.