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

Есть объекты событий – EventObject. Соответственно имеются типы событий: ActionEvent, WindowEvent и другие.

Чтобы подписаться на событие:
ОбъектИсточника.addСобытиеListner(объект слушателя события).

Пример 8.
ActionListner listner = JButton button = new JButton(“Ok”);
button.addActionListner(listner);

Слушатель – класс, реализующий специализированный интерфейс слушателя, например, ActionListner. У такого интерфейса есть метод actionPerformed(ОбъектСобытия).

Наша задача – реализовать интерфейс слушателя.

Пример 9.
class MyListner implements ActionListner
{

public void actionPerformed(ActionEvent event)
{
// Реакция на событие
}
}

Источник события вызывает этот метод для генерации события(сообщает, что это событие наступило): listner.actionPerformed(event);

Пример 10.
JButton btnYellow = new JButton(“Yellow”);
JButton btnBlue = new JButton(“Blue”);

class ButtonPanel extends JPanel {
public ButtonPanel(){
add(btnYellow);
add(btnBlue);

class ColorAction implements ActionListner {
private Color bkColor;
public ColorAction(Color c) { bkColor = c; }
public void actionPerformed(EventObject event)
{
// Отреагировать на событие
}

ColorAction actYellow = new ColorAction(Color.yellow);
ColorAction actBlue = new ColorAction(Color.blue);// регистрация
???
// Чтобы получить доступ, нужно сделать класс внутренним для класса Panel.
class ButtonPanel extends JPanel {
private class ColorAction implements ActionListner {
public void actionPerformed(ActionListner {
// …
SetBackground(backgroundColor);
repaint();
}
private Color backgroundColor;
}}