2011-02-03 17 views
9

Ho un'idea di come utilizzare i listener di azioni e di implementarle, ma mi chiedevo se qualcuno potesse dirmi come ascoltano gli eventi? C'è qualche tipo di meccanismo di votazione?Come funziona un ActionListener?

risposta

13

I listener di azioni si registrano per gli eventi utilizzando lo Observer pattern e vengono notificati, dal loop eventi principale, degli eventi per cui sono registrati. Quindi no, non è un meccanismo di polling (pull), ma il contrario - un richiamo (push). Questo è un esempio di programmazione "non chiamaci, ti chiameremo". Poiché tutto nel tuo codice scorre da un singolo thread (il ciclo degli eventi) non ti devi preoccupare della sincronizzazione tra diversi eventi, quindi il tuo codice è sicuro.

1

C'è un ciclo di eventi implementato nel core di AWT. Riceve tutti gli eventi e li invia ad ascoltatori appropriati.

1

Il tutorial spiega come funzionano abbastanza bene: http://download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

penso che l'attuazione di interfaccia utente del JComponent scatterà (call) tutti gli eventi registrati su l'utente interagisce con esso (credo).

Ad esempio, quando un utente fa clic su un JButton, il pulsante (o è ui, o qualche altro gestore interno) sarà occhiata tutto ActionListeners registrato e chiamare i loro actionPerformed(...) metodi.