我阅读了与事件队列相关的Java文档中的一条声明,声明“注意事件发布到eventQueue可以合并”。这条线的含义是什么?事件如何从事件队列中调度
回答
http://docs.oracle.com/javase/7/docs/api/java/awt/EventQueue.html
事件后
public void postEvent(AWTEvent theEvent)
帖子一个1.1样式的事件发送到
EventQueue
。如果在具有相同ID和事件源的队列上存在现有的 事件,则将调用源方法Component's coalesceEvents
。参数:
theEvent
- 的java.awt.AWTEvent
一个实例,或它的 一个子类抛出:NullPointerException
- 如果theEvent是null
http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html
coalesceEvents
protected AWTEvent coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent)
潜在地合并正在发布的事件与现有事件。 如果在队列中找到与要发布的事件具有相同ID的事件(这两个事件 都必须包含此组件作为其源),则此方法由
EventQueue.postEvent
调用。此方法或者返回 合并事件,该合并事件替换现有事件(然后丢弃新事件 )或null
以指示没有合并应为 完成(将第二个事件添加到队列末尾)。事件 参数可能被修改并返回,因为另一个被丢弃 除非返回null
。
coalesceEvents
的这种实现方式合并了两种事件类型: 鼠标移动(和拖动)事件以及绘制(和更新)事件。对于鼠标 移动事件,最后的事件总是返回,导致中间的 移动被丢弃。对于绘画事件,新事件合并到对等体中的复合体RepaintArea
中 。新的AWTEvent
总是返回 。参数:
existingEvent
- 已经在EventQueue
newEvent
事件 - 事件被发布到EventQueue
返回:一个已组合的事件,或者null
表明 没有凝聚做
AFAIK postEvent clean_up队列中,所有事件都会丢失,并且新事件被触发,这可能是SecondaryLoop(自Java7以来)的原因之一, – mKorbel
- 1. 事件调度的队列/数据库?
- 2. 事件队列中的节流事件
- 3. 如何在pygame的事件队列中添加按键事件
- 4. jQuery队列事件
- 5. SDL事件队列
- 6. jquery队列事件?
- 7. java事件队列
- 8. JavaScript事件队列
- 9. 从基于外部事件(事件队列)的队列中消费
- 10. jQuery调度事件?如何
- 11. 纪事队列中的事件听者
- 12. X11:从队列中删除事件
- 13. jQuery条件队列事件
- 14. 事件调度
- 15. 事件队列函数回调
- 16. 如何实现事件队列?
- 17. 如何清空SDL事件队列?
- 18. 如何在redux中调度onchange事件?
- 19. 排队等候的事件数量? (Win32事件队列)
- 20. 重点事件与调度事件
- 21. JS调度事件
- 22. 调度事件DATAGROUP
- 23. MySQL事件调度
- 24. as3调度事件
- 25. BackgroundWorker ReportProgress事件队列
- 26. NServiceBus事件超时队列
- 27. pygame的事件队列
- 28. JQuery清除队列事件
- 29. PyV8:事件队列满
- 30. Javascript mousemove事件队列
摇摆漆事件得到“合并”,所以不要做太多重复的绘画。 – morpheus05