Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从事件队列调度事件_Java_Swing_Awt_Awt Eventqueue - Fatal编程技术网

Java 如何从事件队列调度事件

Java 如何从事件队列调度事件,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

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

postEvent

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以来)的原因之一