1

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

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

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

4

2 回答 2

5
  1. 显示忙碌的对话框。

  2. 启动SwingWorker并在后台(数据库)执行所有长时间运行的任务

  3. 完成后,使用数据库中的数据创建大对话框(在 SwingWorker.done(method) 内部)

  4. 隐藏忙碌的对话,显示大对话。

于 2011-05-03T13:18:23.783 回答
0

你应该更好地使用 SwingWorker:

  1. 创建带有忙碌标签的对话框,创建摇摆工人
  2. 启动 swingworker(它将从 DB 异步加载数据,为主对话框准备控制)
  3. 在 SwingWorker 的 done() 方法中,隐藏第一个小对话框并显示主对话框
于 2011-05-03T13:21:43.813 回答