2015-11-01 47 views
0

我讀過所有Java swing都不是線程安全的。與擁有者框架異步打開JDialog的問題

我從遠程站點異步加載數據,並在加載後將其顯示在對話框中。我擔心的是,如果swing不是線程安全的,就像我聲稱的那樣,我擔心在設置對話框的所有者框架時會導致問題,這個框架位於另一個線程中。

如果我對我的關注是正確的,我該如何同步打開對話框並避免任何問題?

回答

2

必須在事件分派線程(EDT)上創建和更新Swing組件。

當您使用單獨的線程加載數據時,您可以使用SwingUtilities.invokeLater(...)來創建對話框及其組件。

或者另一種選擇是使用SwingWorker。當工作人員的後臺處理完成後,您的代碼可以自動在EDT上執行。

閱讀Swing教程Concurrency中的部分以獲取更多信息和工作示例。