在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