2011-07-31 31 views
0

什麼是處理GUI /內部應用程序通信的最佳方式。我有很多處理數據的底層線程,並且想將它們的輸出發佈到gui。圖形用戶界面/應用程序通信

我是否應該擁有某種處理程序對象,這些處理程序對象由我的所有runnables擁有,然後讓它們發佈給它,以便它可以處理gui的輸出?

回答

2

我通常使用observer pattern進行這種通信。所以基本上你的線程類實現了一個通用的接口(addObserver()),使它們成爲可觀察的,而你的GUI控制器/視圖實現了觀察者接口(fireNewEvent())。如果一個線程產生了某種新的內容,它會在觀察者上調用一個方法。取決於您的項目,要呈現的信息可以是推送給觀察者(例如,fireNewEvent(Event e)),或者觀察者可以自己訪問信息(pull)。基本上這是你的想法,加上通知不止一個觀察員(如果需要)的靈活性。

0

如果您正在使用線程來避免在執行長時間任務時凍結用戶界面,SwingWorker可以爲您提供幫助。