我正在尝试创建一个JDialog
,它将显示一个动画图像,直到后台进程完成。我创建了一个显示动画GIF 的JDialog
但是当我在实际进程开始之前将它放入时它只显示空白的JDialog。
这是我的代码:
public void createDialog()
{
d =新的JDialog();
JLabel l =新的JLabel(新的ImageIcon(新的URL(" path_of_icon")));
d.setSize(100,100);
d.add(升);
d.setVisible(真);
d.alwaysOnTop(真);
}
//现在我该如何调用此函数
createDialog();
doBackgroundProcess(); //就像从数据库中获取数据一样 d.dispose();
有人可以告诉我如何在不中断后台进程的情况下显示加载图像。我是否需要使用SwingWorker
或Thread
。
答案 0 :(得分:1)
SwingWorker
是您的最佳选择,因为它会为您管理多个主题。
以下是http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
的更多信息更新:
doInBackground
在单独的(非UI)线程上执行,通常用于很长的非UI进程。当长进程完成时,在UI线程上执行方法done
。因此,在创建SwingWorker
之前创建并显示对话框。在SwingWorker
中使用done
运行后台流程 - 隐藏对话框。