我有數百個在EDT中運行的不同功能。其中很多包括長時間運行的任務,有些包括對GUI的更改。有時用戶圖形用戶界面會掛起,但由於圖形用戶界面在100%的時間內不在同一區域發生,所以很難跟蹤發生這種情況的所有位置。該問題不是高優先級,因爲掛起通常在窗口最小化/最大化之後開始工作,但最終需要完成。替代SwingWorker或如何在這種情況下實現它...?
經過一番研究後,我發現我可以在SwingWorker下使用doInBackground()來處理任何勞動敏感的工作方法,並在GUI繪圖中使用done()。另外,我相信我可以使用SwingUtilities.invokeLater來處理恰好在doInBackground()函數中的每個GUI繪圖。但是,我想避免在代碼中調整數百個函數中的每一個。
有沒有一種方法可以使用單個SwingWorker並將任何長時間運行的方法發送到doInBackground()函數?對於使用SwingWorker的每個錯位的GUI代碼多次使用invokeLater函數是而不是的一個問題,因爲它不是那麼頻繁。
如果這是不可能的,是否有某種替代方法可以使用?謝謝。
我想我寫了部分的問題不正確。我想避免使用SwingWorker重寫這些方法中的所有長時間運行的任務,並希望能夠擁有一個可以使用所有方法的SwingWorker。 多次使用SwingUtilities.invokeLater不是**問題,因爲它不會經常發生。 我將編輯我的帖子並修復通信錯誤。 –
不幸的是,你不能多次重複使用同一個SwingWorker。 –
好的,我將不得不單獨爲每種方法添加SwingWorkers。謝謝! –