Java 如何从事件队列调度事件
我在Java文档中读到一条与事件队列相关的语句,其中说“注意,发布到事件队列的事件可以合并”。这句话是什么意思? postEventJava 如何从事件队列调度事件,java,swing,awt,awt-eventqueue,Java,Swing,Awt,Awt Eventqueue,我在Java文档中读到一条与事件队列相关的语句,其中说“注意,发布到事件队列的事件可以合并”。这句话是什么意思? postEvent public void postEvent(AWTEvent theEvent) 将1.1样式的事件发布到EventQueue。如果存在 具有相同ID和事件源(源)的队列上的事件 组件的coalesceEvents方法将被调用 参数:theEvent-java.awt.awteEvent的实例或其子类 抛出:NullPointerException-如果事件为n
public void postEvent(AWTEvent theEvent)
将1.1样式的事件发布到EventQueue
。如果存在
具有相同ID和事件源(源)的队列上的事件
组件的coalesceEvents
方法将被调用
参数:theEvent
-java.awt.awteEvent的实例或其子类
抛出:NullPointerException
-如果事件为null
联合事件
protected AWTEvent coalesceEvents(AWTEvent existingEvent,
AWTEvent newEvent)
可能将正在发布的事件与现有事件合并。
如果事件具有
在队列中找到与要发布的事件相同的ID(两个事件
必须将此组件作为其源)。此方法要么返回
替换现有事件(和新事件)的合并事件
然后被丢弃),或null
,以指示不应进行组合
完成(将第二个事件添加到队列末尾)。任一事件
可以修改并返回参数,因为另一个参数将被丢弃
除非返回null
合并事件的此实现将合并两种事件类型:
鼠标移动(和拖动)事件以及绘制(和更新)事件。为了老鼠
移动事件始终返回最后一个事件,导致中间
要丢弃的移动。对于绘制事件,将合并新事件
进入一个复杂的重新维护区域
。新的AWTEvent
总是
返回
参数:existingEvent
-事件队列中已存在的事件
newEvent
-正在发布到
EventQueue
返回:联合事件,或null
指示
没有进行合并
Swing paint事件被“合并”,因此不会进行太多冗余的绘制。在AIK postEvent清理队列中,所有事件都将丢失,并触发新事件,这可能是存在SecondaryLoop(自Java7以来)的原因之一