2013-05-03 56 views
-1
private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    if ("PDF(.pdf)".equals(jComboBox1.getSelectedItem())) { 
       query = queryPane.getText(); 
       filePath = selectedFolder.getText(); 
       new DataBaseToPDF(filePath, query); 
      } 
     } 

這是一個代碼片段,通過單擊按鈕將數據導出爲pdf文件(DataBaseToPDF(filePath,query))。當進程在後臺運行時,我想顯示一個進度條直到導出完成。我遇到過很多例子,它告訴我們如何創建一個JProgressBar,但是他們沒有一個告訴如何將它鏈接到正在運行的java應用程序。帶進度條的鏈接應用程序

告訴我該怎麼做。

+1

發佈()/進度()是否正被工具sun **在結束之前給**任何進度指示?許多人不這樣做,在這種情況下,這是不可能的。只需向用戶顯示一個不確定的進度條並完成它。 *「告訴我該怎麼做。」*如果您要求我做事,我需要$。你如何將這個問題改爲「如何做到這一點?」這樣的問題。 – 2013-05-03 13:31:07

+2

您的任務(將數據導出爲PDF)非常耗時。由於swing在單線程(EDT)上運行,因此在此過程中您的GUI將被「凍結」(在進程結束之前,JProgressBar將不顯示任何內容)。縮短:看看這個問題:http://stackoverflow.com/questions/4637215/can-a-progress-bar-be-used-in-a-class-outside-main/4637725#4637725而在SwingWorker :http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html – 2013-05-03 13:33:26

+0

@ AndrewThompson-我很抱歉沒有禮貌。我不是那個意思。 是的,作爲一個跡象,我已經添加了一個JOptionPane,它在導出完成時給出一條消息。 – Ritesh 2013-05-03 13:43:26

回答

4
  • 使用ProgressMonitorInputStream,更在甲骨文教程How to Use Progress Bars

  • ,或者創建自己的進度監控,

    1. 文件字節大小

    2. 鴻溝這個大小爲100,隨着進程發送緩衝區寫入字節到文件

    3. 通知所有更新到Swing GUI必須在美國東部時間來完成,通過覆蓋包裹的invokeLater

    4. 使用的SwingWorker