Обработка внутренним классом

Внутри класса 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 методов ничего не делают.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: