Как работает ActionListener? - PullRequest
       8

Как работает ActionListener?

10 голосов
/ 03 февраля 2011

У меня есть идея о том, как использовать слушателей действий и реализовывать их, но мне было интересно, может кто-нибудь сказать мне, как они слушают события?Есть ли какой-то механизм опроса?

Ответы [ 3 ]

13 голосов
/ 03 февраля 2011

Слушатели действий регистрируются для событий, используя шаблон Observer , и они уведомляются главным циклом событий о любых событиях, для которых они зарегистрированы.Так что нет, это не механизм опроса (вытягивания), а наоборот - обратный вызов.Это пример программирования «не звоните нам, мы вам позвоним».Поскольку все в вашем коде выполняется из одного потока (цикла обработки событий), вам не нужно беспокоиться о синхронизации между различными событиями, поэтому ваш код безопасен для потоков.

1 голос
/ 03 февраля 2011

В руководстве объясняется, как они работают достаточно хорошо: http://download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

Я думаю, что реализация пользовательского интерфейса JComponent будет запускать (вызывать) все зарегистрированные события при взаимодействии пользователя с ним (я думаю).

Например, когда пользователь нажимает JButton, кнопка (или ее пользовательский интерфейс, или какой-либо другой внутренний обработчик) будет искать все зарегистрированные ActionListeners и вызывать их actionPerformed(...) методы.

1 голос
/ 03 февраля 2011

Существует цикл событий, который реализован в ядре AWT.Он получает все события и отправляет их соответствующим слушателям.

...