【问题标题】:show JDialog with animated gif while processing some work in background在后台处理一些工作时显示带有动画 gif 的 JDialog
【发布时间】:2014-04-27 21:58:41
【问题描述】:

我正在尝试创建一个JDialog,它将在后台进程完成之前显示动画图像。我创建了一个JDialog,它显示了 动画 GIF,但是当我在实际进程开始之前将其放置时,它只显示空白 JDialog。

这是我的代码:

public void createDialog()
{
d=新的 JDialog();
JLabel l=new JLabel(new ImageIcon(new URL("path_of_icon")));
d.setSize(100,100);
d.add(l);
d.setVisible(true);
d.alwaysOnTop(true);
}

//现在我该如何调用这个函数

createDialog();
doBackgroundProcess(); //就像从数据库中获取数据
d.dispose();

谁能告诉我如何在不中断后台进程的情况下显示加载图像。我需要使用SwingWorker 还是Thread

【问题讨论】:

标签: java swing jdialog swingworker


【解决方案1】:

SwingWorker 是您的最佳选择,因为它会为您管理多个线程。

这里有更多关于它的信息http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html

更新:

doInBackground 在单独的(不是 UI)线程上执行,通常用于长的非 UI 进程。当长进程完成时,方法done 在 UI 线程上执行。因此,在创建SwingWorker 之前创建并显示您的对话框。在done 中使用SwingWorker 运行您的后台进程 - 隐藏对话框。

【讨论】:

  • 我需要在doInBackground()方法中使JDialog可见还是需要重新绘制。我很困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2014-04-03
  • 2016-08-23
  • 2011-02-25
  • 2017-02-12
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多