在Java中,每次事件调度线程从处理输入事件返回时,是否可以调用例程?

时间:2011-05-09 04:29:43

标签: java events event-dispatch-thread

我正在开发一个GUI,我有一个例程,当事情发生变化时更新显示:

void update() {
    if (needsUpdating) {
        // ...
        needsUpdating = false;
    }
}

我试图避免“经常”调用update() - 即,如果连续设置了许多属性,我宁愿只调用update()一次。

是否可以在每个用户输入事件后调用update() - 键/鼠标/等?我可以手动执行此操作,但我有很多事件处理程序,我知道我会忘记 - Java可以为我做这个吗?

2 个答案:

答案 0 :(得分:1)

是的,您可以全局收听用户事件,但我不推荐它,除非您没有找到其他方式:

http://tips4java.wordpress.com/2009/08/30/global-event-listeners/

真正的问题似乎是你的应用程序设计:

  

我可以手动完成,但我有   这么多的事件处理程序,我知道我会   忘记

尝试将建模那些“很多”分成不同的部分,并清楚地定义哪个部分需要在哪个时间触发更新。实际上,一旦你超越了最简单的应用程序,无论实际的聆听实现如何,都无法绕过这样的模型。首先,请参阅f.i。

https://softwareengineering.stackexchange.com/questions/71022/what-is-good-programming-practice-for-structuring-java-project

答案 1 :(得分:0)

您可以通过继承EventQueue来使用自己的事件队列。随着它控制所有事件,并在您需要时进行更新。请参阅How to replace the AWT EventQueue with own implementation

但是我不明白你的用例:swing为所有事件做了gui更新,你为什么要自己做?