Java如何在返回控件之前等待任务完成

时间:2016-03-09 03:48:07

标签: java swing

这是一个普遍的问题,因为我不知道要搜索什么。但我有以下几点。

JPanel,输入一些用户信息并按 FINISH 按钮,这将转到JChooser来保存文件。按下保存程序后,程序返回到JPanel,然后关闭。如果有大量用户数据,JPanel将在写入完成之前返回!

在他们给出文件名并按保存后,我想要一个进度/加载栏来指示保存的状态。我该怎么做,在返回JPanel之前如何等待完成保存?

这叫什么?

1 个答案:

答案 0 :(得分:2)

你应该做几件事:

  • 首先,在后台线程中写入和读取所有文件,以免冻结Swing事件线程。 SwingWorker可以很好地解决这个问题。
  • 如果需要显示正在SwingWorker中运行的长时间运行进程的进度,请在进程运行时在其doInBackground()方法中更新其进度属性。
  • 然后将一个PropertyChangeListener添加到SwingWorker并监听对此“bound”属性的更改。该物业的名称是“进度”,所以这应该很容易。
  • 然后在上面的监听器中,更新JProgressBar的值。
  • 接下来在模态JDialog或JOptionPane(它是模态JDialog的变体)中显示JProgressBar的进度。这将阻止父窗口获得焦点或运行代码,直到对话框不再可见。