Есть объекты событий – 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; }}