我在与事件队列相关的Java文档中读到一条声明,说“注意发布到eventQueue的事件可以合并”。这条线是什么意思?
答案 0 :(得分:2)
<强> http://docs.oracle.com/javase/7/docs/api/java/awt/EventQueue.html 强>
<强>事件后强>
public void postEvent(AWTEvent theEvent)
向
EventQueue
发布1.1风格的活动。如果存在 队列中的事件具有相同的ID和事件源,即源 将调用Component's coalesceEvents
方法。参数:
theEvent
-java.awt.AWTEvent
的实例,或其子类 投掷:NullPointerException
- 如果事件是null
<强> http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html 强>
<强> coalesceEvents 强>
protected AWTEvent coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent)
可能合并使用现有事件发布的事件。 如果事件带有,则
EventQueue.postEvent
调用此方法 在队列中找到与要发布的事件相同的ID(两个事件 必须将此组件作为其来源)。这个方法要么返回 合并的事件,替换现有事件(和新事件 然后丢弃),或null
表示不应该合并 完成(将第二个事件添加到队列的末尾)。无论哪种事件 可以修改并返回参数,因为丢弃了另一个参数 除非返回null
。
coalesceEvents
的此实现合并了两种事件类型: 鼠标移动(和拖动)事件,以及绘制(和更新)事件。对于鼠标 移动事件总是返回最后一个事件,导致中间 移动被丢弃。对于绘制事件,新事件将合并 进入对等体中的复杂RepaintArea
。新的AWTEvent
始终是 返回。参数:
existingEvent
- 已在EventQueue
newEvent
上发生的事件 - 正在发布到EventQueue
返回:合并事件,或null
表示 没有完成合并