我读到所有 Java swing 都不是线程安全的。
我正在从远程站点异步加载数据,并在加载后将其显示在对话框中。我担心的是,如果 swing 不像它声称的那样是线程安全的,那么当我设置对话框的所有者框架(位于不同的线程中)时,我担心会导致问题。
如果我的担忧是正确的,我该如何同步打开对话框并避免出现任何问题?
最佳答案
必须在事件调度线程 (EDT) 上创建和更新 Swing 组件。
当您使用单独的线程加载数据时,您可以使用 SwingUtilities.invokeLater(...)
创建对话框及其组件。
或者另一种选择是使用 SwingWorker
。当工作线程的后台处理完成后,您的代码就可以在 EDT 上自动执行。
阅读 Swing 教程中关于 Concurrency 的部分了解更多信息和工作示例。
关于java - 与所有者框架异步打开 JDialog 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465195/