10

我知道如何使用动作监听器并实现它们,但我想知道是否有人能告诉我他们如何监听事件?是否有某种轮询机制?

4

3 回答 3

13

动作侦听器使用观察者模式注册事件,并通过主事件循环通知他们注册的任何事件。所以不,这不是轮询(拉)机制,而是相反的——(推)回调。这是“不要打电话给我们,我们会打电话给你”编程的一个例子。因为代码中的所有内容都在单个线程(事件循环)上运行,所以您不必担心不同事件之间的同步 - 所以您的代码是线程安全的。

于 2011-02-03T11:38:04.413 回答
1

本教程解释了它们如何很好地工作:http: //download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

我认为 UI 实现JComponent将在用户与其交互时触发(调用)所有注册事件(我认为)。

例如,当用户单击 aJButton时,按钮(或它的 ui,或其他一些内部处理程序)将查找所有已注册ActionListeners并调用它们的actionPerformed(...)方法。

于 2011-02-03T11:37:23.040 回答
1

在 AWT 的核心中实现了一个事件循环。它接收所有事件并将它们发送给适当的侦听器。

于 2011-02-03T11:35:32.623 回答