首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在事件分派线程中同时运行两个组件?

如何在事件分派线程中同时运行两个组件?
EN

Stack Overflow用户
提问于 2011-05-03 13:10:57
回答 2查看 639关注 0票数 1

我有一个JButton,当我点击它时,我从一个数据库加载一些数据+初始化一个拥有多个控件的JDialog +用加载的数据填充这些控件,然后显示缓慢的JDialog。这需要大约3到5秒的时间才能最终显示JDialog,这会导致程序以糟糕的方式冻结。

我创建了一个小型JDialog,其中包含一个来自SwingX的JXBusyLabel,用于在加载和初始化这样缓慢的进程时显示一个繁忙的标签。但是,如何在初始化慢速对话框时在EDT中运行这个繁忙的标签JDialog?

注意:从db加载数据并不慢,但是初始化繁重的JDialog及其组件会导致处理速度缓慢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-03 13:18:23

  1. 显示繁忙的对话框。
  2. 启动SwingWorker并在后台执行所有长期运行的任务(数据库)
  3. 完成后,使用数据库中的数据创建大对话框(在SwingWorker.done(方法)中)
  4. 隐藏繁忙对话框,显示大对话框。
票数 5
EN

Stack Overflow用户

发布于 2011-05-03 13:21:43

最好使用SwingWorker:

  1. 创建带有繁忙标签的对话框,创建swing worker
  2. 启动swingworker (它将异步地从DB加载数据,为主对话框准备控件)
  3. 在SwingWorker的done()方法中,隐藏第一个小对话框并显示主对话框
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5869955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档