是否有任何标准技术和/或在Java中折叠多个事件的示例?

时间:2011-11-29 13:31:04

标签: java events user-interface event-handling

让我先描述一下我发现自己的具体情况,虽然我的问题实际上更为笼统。我正在编写一个包含几个滑块的组件,我让听众听取这些滑块的事件。当其中一个滑块发生变化时,我希望我的组件向其自己的侦听器发送一个事件,以通知它们其状态已发生变化。但是我想限制发送的事件数量,即如果有多个事件在我的组件通知其监听器时等待,我想将所有这些事件折叠成一个事件。

我的问题是,是否有标准技术。如果是这样,任何一个例子都会受到欢迎,因为我找不到任何例子。 (也许崩溃不是正确的术语?)

2 个答案:

答案 0 :(得分:2)

我相信崩溃是正确的用语。实现此类行为的Java Core库中的示例类是RepaintManager。我会查看它是source code,看看它是如何折叠多个重绘请求的。

答案 1 :(得分:0)

在你做任何这样的事情之前,你应该确保它确实是必要的。

我想你需要从你的监听器访问EventQueue。当事件触发回调方法时,此方法应首先查看队列以查看是否存在相关类型的更新事件,如果是,则仅处理最新事件,然后从队列中删除该类型的所有事件

由于回调总是在Swing(awt)事件线程上,因此您不必担心并发。