如何从事件队列调度事件

时间:2013-07-24 19:46:10

标签: java swing awt awt-eventqueue

我在与事件队列相关的Java文档中读到一条声明,说“注意发布到eventQueue的事件可以合并”。这条线是什么意思?

1 个答案:

答案 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表示   没有完成合并