2016-03-09 149 views
0

這是一個普遍的問題,因爲我不知道要搜索什麼。但我有以下幾點。Java如何在返回控制之前等待任務完成

JPanel,放入一些用戶信息並按FINISH按鈕,這將轉到JChooser來保存該文件。在他們按下保存後,程序返回到JPanel,然後關閉。如果有很多用戶數據,JPanel會在寫入完成之前回來!

他們提供一個文件名後按保存,我想要一個進度/負載欄來指示保存的狀態。我如何做到這一點,在返回JPanel之前如何完成保存?

這是什麼叫?

回答

2

你應該做幾件事情:

  • 首先,做所有的文件寫入,並在後臺線程讀取,以免凍結Swing事件線程。 SwingWorker會爲此工作得很好。
  • 如果需要顯示SwingWorker中正在運行的長時間運行進程的進度,那麼在進程運行時更新其doInBackground()方法中的progress屬性。
  • 然後將PropertyChangeListener添加到SwingWorker並監聽對「綁定」屬性的更改。該屬性的名稱是「進度」,所以這應該很容易。
  • 然後在上面的監聽器中,更新JProgressBar的值。
  • 接下來在模態JDialog或JOptionPane(它是模態JDialog的變體)中顯示JProgressBar的進度。這將防止父窗口獲得焦點或運行代碼,直到對話框不再可見。
+0

非常感謝你,我會盡力實現,並問我是否卡住= D –