我有一个JButton,当我点击它时,我从数据库加载一些数据+初始化一个有很多控件的JDialog +用加载的数据填充那些控件然后显示慢JDialog。这需要大约3到5秒才能最终显示JDialog,这会导致程序以错误的方式冻结。
我创建了一个带有来自SwingX的JXBusyLabel的小型JDialog,以便在加载和初始化此类缓慢进程时显示忙标签。但是,如何在初始化慢速对话框的同时在EDT中运行这个繁忙的标签JDialog?
注意:从db加载数据并不慢,但是初始化繁重的JDialog及其组件会导致处理速度变慢。
答案 0 :(得分:5)
显示忙碌对话框。
启动SwingWorker并在后台执行所有长时间运行的任务(数据库)
完成后,使用数据库中的数据创建大对话框(在SwingWorker.done(方法)内)
隐藏繁忙的对话框,显示大对话框。
答案 1 :(得分:0)
您最好使用SwingWorker: