2011-02-03 12 views
9

Mam pomysł, jak korzystać ze słuchaczy akcji i ich realizacji, ale zastanawiałem się, czy ktoś mógłby mi powiedzieć, jak słuchają wydarzeń? Czy istnieje jakiś mechanizm wyborczy?Jak działa ActionListener?

Odpowiedz

13

Słuchacze akcji rejestrują się w Zdarzeniach za pomocą urządzenia Observer pattern i są powiadamiani przez główną pętlę zdarzeń o wszelkich zarejestrowanych zdarzeniach. Więc nie, to nie jest mechanizm odpytywania (pull), ale przeciwieństwo - wywołanie zwrotne (push). To jest przykład programowania "nie dzwoń, zadzwonimy do ciebie". Ponieważ wszystko w kodzie uruchamia pojedynczy wątek (pętlę zdarzeń), nie musisz się martwić o synchronizację pomiędzy różnymi zdarzeniami - więc twój kod jest bezpieczny dla wątków.

1

Istnieje pętla zdarzeń zaimplementowana w rdzeniu AWT. Odbiera wszystkie zdarzenia i wysyła je odpowiednim słuchaczom.

1

Tutorial wyjaśnia, w jaki sposób one działają dość dobrze: http://download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

myślę realizacja UI z JComponent zadziała (połączenia) wszystkich zarejestrowanych zdarzeń po interakcji użytkownika z nim (chyba).

Na przykład, gdy użytkownik kliknie JButton, przycisk (lub to ui, albo jakiś inny obsługi wewnętrzna) będzie odnośnika wszystkie zarejestrowane ActionListeners i nazywają ich actionPerformed(...) metod.