2009-07-28 62 views

回答

6

SwingWorker是專門設計來做到這一點的。

它允許您運行不會阻止GUI的任務,然後返回值並在完成後更新GUI。

Java有關於如何使用SwingWorkergreat tutorial

基本上做數據庫拉doInBackground()方法。並且,在done()方法中,更新您的GUI。

5

由於jinguy提到SwingWorker應該是你看的第一個地方。 Wikipedia在所有地方都有一些有趣的例子,在處理JavaDocs之前可能很好看。

+0

我永遠不知道維基百科在`SwingWorker`上有這麼棒的文章。我喜歡你,但我不想失去我在排序順序上的位置......(對不起) – jjnguy 2009-07-28 19:01:11

2

正如jjnguy提到的那樣,SwingWorker有助於在這裏抽象出複雜性,但基本上你可以在新線程中完成工作,並且當方法返回時,需要更新擺動線程中的GUI。如果您不使用SwingWorker,則基礎方法是SwingUtilities(或EventQueue).invokeLater(Runnable)。

不要更新擺動隊列之外的任何與Swing相關的(包括模型),不可預知的事情將會發生。並且不要試圖持續引用隊列並使用它,因爲隊列被暫停和替換(例如,如果您打開模型對話框)。