0

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

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

我试图避免“过于频繁地”调用 update() ——即,如果连续设置了许多属性,我宁愿只调用一次 update()。

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

4

2 回答 2

1

是的,您可以全局收听用户事件,但我不建议这样做,除非您找不到其他方式:

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

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

我可以手动执行此操作,但我有很多事件处理程序,我知道我会忘记

尝试将这些“许多”建模为单独的部分,并明确定义哪个部分需要在何时触发更新。实际上,一旦您超越了最琐碎的应用程序,无论实际聆听的实现如何,都无法绕过这种模型。对于初学者,请参阅 fi

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

于 2011-05-09T10:39:55.477 回答
0

您可以通过继承 EventQueue来使用自己的事件队列。用它控制所有事件,并在需要时进行更新。请参阅如何用自己的实现替换 AWT EventQueue

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

于 2011-05-09T06:38:35.533 回答