Внутри класса Notebook
…….
class TextMove implements ActionListener {
public void actionPerformed(…………){………}
}
………………
tf.add ActionListener(new TextMove());
b.add ActionListener (new TextMove());
…………
или
ActionListener tm = new TextMove();
tf.addActionListener(tm);
Обработка безымянным (анонимным) внутренним классом
tf.add ActionListener (new ActionListener() {
public void actionPerformed (ActionEvent al) {
ta.append(tf.getText()+ “\n”);
}
});
b.add …
Обработка отдельным классом (внешним)
class TextMove implements ActionListener {
private JTextField tf;
private JTextArea ta;
TextMove (JTextField tf, JTextArea ta) {
this. tf = tf;
this. ta = ta;
}
public void actionPerformed (ActionEvent al) {
ta.append (tf.getText () + “\n”);
}
}
class MyNotebook extends JFrame () {
…
tf. add ActionListener(new TextMove (tf,ta));
b.add
…
}
Либо
TextMove tml = new TextMove (tf,ta);
tf.addActionListener (tml);
b.addActionListener (tml);
…
Классы – адаптеры
Некоторые интерфейсы слушателей содержат много методов:
WindowListener-7 методов
MouseListener –5 методов
MouseMotionListener-2 метода
…
При реализации интерфейса нужно переопределить их все.
Класс – адаптер реализует все методы с пустым телом.
public abstract class MouseMotionAdapter implements MouseMotionListener {
public void mouseDragged (MouseEvent e) {}//перемещение с нажатой
//кнопкой
public void mouseMoved (MouseEvent e) {}
}
И можно расширять эти классы:
frame.addWindowListener (new WindowAdapter () {
public void windowClosing (WindowEvent l) {
System.exit(0);
}
}); // переопределен 1 метод, 6 методов ничего не делают.