從Oracle's Swing Concurrency page:
Swing事件處理代碼上被稱爲事件 調度線程一個特殊的線程運行。調用Swing方法的大多數代碼也可以在此線程的 上運行。這是必要的,因爲大多數Swing對象方法不是「線程安全」的: :從多個線程調用它們可能會導致線程干擾或內存一致性錯誤 。
的SwingWorker API頁的報告,關於doInBackground()
方法:
計算結果,或拋出一個異常,如果無法做到這一點。
然後,它用於從工作人員執行一些任務,在工作線程上執行。
和有關done()
方法:
doInBackground方法 完成後,在事件指派線程執行。默認實現什麼都不做。子類可能會 重寫此方法以在事件 調度線程上執行完成操作。請注意,您可以查詢 執行此方法內部的狀態,以確定此任務的結果或 此任務是否已被取消。
通常,它用於在doInBackground()
完成其工作後顯示最終結果。
然後,我想你應該使用類似的代碼將光標定位在doInBackground()
SwingWorker的方法 :
public Void doInBackground() {
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
...
}
,並取消它的done()
SwingWorker的方法,具有:
public void done() {
setCursor(Cursor.getDefaultCursor());
...
}
你可以請在Cursor類API上查找有關這些遊標方法的其他信息。
Here頁面上有一些繁忙的光標代碼示例,here這是一個與光標相關的SO問題。
爲了得到更快的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-02-18 02:47:10