2011-09-22 33 views
2

我沒有用java的一段時間,我試圖做這樣的事情在一個主類:更改標籤文本發生

// do stuff 
this.label.setText("Status: IDLE"); 
// do things 
this.label.setText("Status: LOADING..."); // set to loading right before file read 
// read and parse huge file 
this.label.setText("Status: DONE"); 

我想要的標籤,以顯示「加載... '正在執行大文件讀取,但標籤永不凍結(作業正在運行)。如何在閱讀期間強制標籤更改?我需要使用單獨的類/線程嗎?在此先感謝您的幫助。

回答

3

如何在閱讀過程中強制標籤更改?我是否需要使用 單獨的類/線程?

是的,你說得對。標籤和改變它的值的類應該在不同的線程中。

看一看SwingUtilities invokeLater

Runnable newThread = new Runnable() { 
    public void run() { 
    } 
}; 

您可以創建一個線程上面這種方式顯示。

2

在後臺線程中執行文件IO。您可以使用SwingUtilities.invokeLater(...)確保設置標籤文本在EDT中完成。或者您可以使用便利課程,爲您完成這一切。

快樂編碼。

2

對長時間運行的任務使用SwingWorker。然後,您可以在標籤需要更新時發佈文本。

請閱讀Concurrency in Swing瞭解更多背景信息。