java - 与所有者框架异步打开 JDialog 的问题

标签 java multithreading swing

我读到所有 Java swing 都不是线程安全的。

我正在从远程站点异步加载数据,并在加载后将其显示在对话框中。我担心的是,如果 swing 不像它声称的那样是线程安全的,那么当我设置对话框的所有者框架(位于不同的线程中)时,我担心会导致问题。

如果我的担忧是正确的,我该如何同步打开对话框并避免出现任何问题?

最佳答案

必须在事件调度线程 (EDT) 上创建和更新 Swing 组件。

当您使用单独的线程加载数据时,您可以使用 SwingUtilities.invokeLater(...) 创建对话框及其组件。

或者另一种选择是使用 SwingWorker。当工作线程的后台处理完成后,您的代码就可以在 EDT 上自动执行。

阅读 Swing 教程中关于 Concurrency 的部分了解更多信息和工作示例。

关于java - 与所有者框架异步打开 JDialog 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465195/

相关文章:

ios - Swift:DismissViewController() 和关闭键盘的线程问题

java - 在 Canvas 顶部添加 Jlabel

java - 如何在java中保存和加载复选框状态和文本字段值?

java - 向后过渡时的 Android fragment

java - MQ api支持别名修改吗

c# - ConcurrentDictionary 的 GetOrAdd 不是原子的。除了锁定还有其他选择吗?

java - 从(大)文本文件填充 JComboBox

用于验证 sql 查询字符串包含 SELECT 和 LIMIT 的 Java Regex

java - 主机环境安全

java - Hibernate拦截器线程安全