在Swing上执行一些操作后更新UI的正确方法是什么?Swing,如何正确更新UI
例如,点击一个按钮后,调用的方法可能几乎是即时的或需要几秒钟的时间。实际上,所有应用程序逻辑都是通过Web服务远程完成的,所以等待应用程序响应是正常的。
我的一个按钮的事件处理程序可能看起来像这些:
myButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
//callWebService();
//do stuff
//updateUI(); // <----- repaint? revalidate? what?
}
});
我目前的实现调用updateUI方法,内部调用的validate()和重绘()为保存UI父组件。这有效,但有时我可以看到屏幕闪烁。我做错了吗?有没有更好的方法来做到这一点?
http://en.wikipedia.org/wiki/SwingWorker – qwerty 2011-02-07 11:58:43
据我了解,这个问题是关于做一些更新后的UI,不是在另一个线程做的东西,以保持UI响应。不过,我不完全明白为什么在问题中提到方法的执行时间。 – 2011-02-07 12:15:20
我提到了执行时间,因为它看起来像Swing在尝试加载组件时的行为有点不同,并且加载时间过长,因此可能需要重新绘制屏幕。 – Hectoret 2011-02-07 12:25:29