我有一个GUI应用程序,变得相当缓慢。我想开始为各种GUI任务引入计时 - 然而,我们的许多GUI操作会触发其他操作,然后“稍后调用”以触发其他操作。
最终,一切都平息下来,没有更多事情要做了。这时,我想停止计时器并报告该GUI“操作”所需的时间。
我认为做到这一点的方法是实现一个名为
一种方法是如果有一种方法可以指定
接下来,我试图“invokeLater”一个Runnable,该Runnable检查事件队列是否为空 - 但是没有公共方法可以看到事件队列是否实际为空。
最好的方法是什么?
最终,一切都平息下来,没有更多事情要做了。这时,我想停止计时器并报告该GUI“操作”所需的时间。
我认为做到这一点的方法是实现一个名为
invokeOnceIdle(Runnable task)
的方法。该方法将仅在AWTEventQueue为空时执行提供的任务。即,提供的“任务”应该是队列中的最后一件事。一种方法是如果有一种方法可以指定
SwingUtilities.invokeLater
的“最低”优先级 - 但这是不可能的。接下来,我试图“invokeLater”一个Runnable,该Runnable检查事件队列是否为空 - 但是没有公共方法可以看到事件队列是否实际为空。
最好的方法是什么?
AWTEvent
需要分发,这是OP所要求的。我不确定你所说的“在RepaintManager出现异常后重新构建GUI(模型和视图)时,clear()和push()可能会有用”。 - Guillaume Polet