2012-01-10 31 views

回答

3

傳遞一個參考到GUI對象讀線程,並且有讀線程調用一種GUI實例在他接收到數據時的方法。

如果GUI是一個Swing GUI,你需要調用包裝成SwingUtilities.invokeLater()

Thread readingThread = new MyReadingThread(gui); 
readingThread.start(); 

,並在讀線程:

String data = readData(); 
SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     gui.dataHasBeenReceived(data); 
    } 
}); 

注意SwingWorker爲專這種用例。

+0

感謝您的解釋和示例代碼,它完美地在我的簡單程序中工作。我聽說過SwingWorker,但我不想閱讀和學習整個類,只是從一個線程發送一個短字符串到另一個線程。 – koleS 2012-01-11 00:24:43

1

通常 - 通過將回調對象傳遞給新線程,並且每當有結果時,調用該回調,然後更新GUI。

「回調」可以是實現您的自定義接口的對象,它將結果作爲參數。

BackgroundThread background = new BackgroundThread(); 
backgroundThread.setCallback(new Foo() { 
    public void updateGUI(Bar bar) { 
     //... 
    } 
} 

比,當你有在後臺線程可用的信息,你可以致電:

getCallback().updateGUI(bar); 
相關問題