如何在Event dispatch线程中同时运行两个组件?

Bra*_*rad 1 java swing event-dispatch-thread

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

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

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

Pet*_*ego 5

  1. 显示忙碌对话框.

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

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

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