760e358a

Самообработка события ActionEvent



Листинг 12.2. Самообработка события ActionEvent 

import j ava.awt.*; 

import java.awt.event.*;

class MyNotebook extends Frame implements ActionListener{ 

private TextField tf; 



private TextArea ta; 

MyNotebook(String title){ 

super(title) ;

tf = new TextField ("Вводите текст**", 50) ; 

add(tf, BorderLayout.NORTH);

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(this) ; 

b.addActionListener(this) ;

setSize(300, 200);
setVisible(true) ; } 

public void actionPerformed(ActionEvent ae){

ta.append(tf.getText()+"\n");

public static void main(String[] args){

Frame f = new MyNotebook(" Обработка ActionEvent");
 

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){

System.exit(0);
 

}

});
 

}

Здесь tf и ta уже не локальные переменные, а переменные экземпляра, поскольку они используются и в конструкторе, и в методе actionPerformed о. Этот метод теперь — один из методов класса MyNotebook. Класс MyNotebook стал классом-обработчиком события ActionEvent — он реализует интерфейс ActionListener. В МвТОДе addActionListener () указывается аргумент this — класс сам слушает свои компоненты.

Рассмотренная схема, кажется, проще и удобнее, но она предоставляет меньше возможностей. Если вы захотите изменить обработку, например заносить записи в поле ta по алфавиту или по времени выполнения заданий, то придется переписать и перекомпилировать класс MyNotebook.

Еще один вариант — сделать обработчик вложенным классом. Это позволяет обойтись без переменных экземпляра и конструктора в классе-обработчике TextMove, как показано в листинге 12.3.



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