0
我讀過所有Java swing都不是線程安全的。與擁有者框架異步打開JDialog的問題
我從遠程站點異步加載數據,並在加載後將其顯示在對話框中。我擔心的是,如果swing不是線程安全的,就像我聲稱的那樣,我擔心在設置對話框的所有者框架時會導致問題,這個框架位於另一個線程中。
如果我對我的關注是正確的,我該如何同步打開對話框並避免任何問題?
我讀過所有Java swing都不是線程安全的。與擁有者框架異步打開JDialog的問題
我從遠程站點異步加載數據,並在加載後將其顯示在對話框中。我擔心的是,如果swing不是線程安全的,就像我聲稱的那樣,我擔心在設置對話框的所有者框架時會導致問題,這個框架位於另一個線程中。
如果我對我的關注是正確的,我該如何同步打開對話框並避免任何問題?
必須在事件分派線程(EDT)上創建和更新Swing組件。
當您使用單獨的線程加載數據時,您可以使用SwingUtilities.invokeLater(...)
來創建對話框及其組件。
或者另一種選擇是使用SwingWorker
。當工作人員的後臺處理完成後,您的代碼可以自動在EDT上執行。
閱讀Swing教程Concurrency中的部分以獲取更多信息和工作示例。