我知道如何使用动作侦听器并实现它们,但我想知道是否有人可以告诉我他们如何听取事件? 有某种投票机制吗?
答案 0 :(得分:13)
动作侦听器使用Observer pattern注册事件,并通过主事件循环通知它们注册的任何事件。所以不,它不是一个轮询(拉)机制,而是相反的 - 一个(推)回调。这是“不要打电话给我们,我们会打电话给你”编程的一个例子。因为代码中的所有内容都运行在一个线程(事件循环)中,所以您不必担心在不同事件之间进行同步 - 因此您的代码是线程安全的。
答案 1 :(得分:1)
有一个事件循环被实现到AWT的核心。它接收所有事件并将它们发送给适当的听众。
答案 2 :(得分:1)
本教程解释了它们如何运作良好:http://download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
我认为JComponent
的UI实现会在用户与之交互时触发(调用)所有已注册的事件(我认为)。
例如,当用户点击JButton
时,按钮(或其ui或其他内部处理程序)将查找所有已注册的ActionListeners
并调用其actionPerformed(...)
方法。< / p>