2010-02-17 34 views
0

我寫了一個簡單的應用程序,我想用JProgressBar Plese幫助我顯示它的延遲;如何使用JProgressBar顯示我的應用程序延遲?

我想用顯示JProgressBar的JOptionPane的,具有取消按鈕,它應該是有模式

這是我的源代碼:

class CustomFrame extends JFrame { 

    private JProgressBar progressBar; 

    public CustomFrame() { 
    long start = System.currentTimeMillis(); 
    myMethod(); 
    this.getContentPane().setLayout(null); 
    this.setSize(200, 200); 

    //JOptionPane. ????? 

    this.setTitle("JFrame"); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setVisible(true); 
     long end = System.currentTimeMillis(); 
     System.out.print("\nTime: " + (end - start)); 
    } 
    public void myMethod(){ 
     try { 
        java.io.File file = new java.io.File("i://m.txt"); 
        BufferedReader input = 
         new BufferedReader(new FileReader(file)); 
        String line; 
        while ((line = input.readLine()) != null) { 
         if (line.indexOf("CREATE KGCGI=") != -1){ 
          System.out.println(line); 
         } 
        } 
        input.close(); 
        } 
        catch(Exception e){ 
         e.printStackTrace(); 
        } 
    } 

謝謝...

回答

3

有幾件事情您需要這樣做才能正常工作:

  1. 您應該知道線程問題在鞦韆。您的GUI繪畫應該在EventDispatchThread上完成,並且磁盤I/O應該在工作線程中完成。見this tutorialSwingWorker JavaDocSwingUtilities.invokeLater更多細節
  2. 那麼你將要得到你的文件(file.length())的大小,以確定如何範圍的進度條(myProgressBar.setMaximum(length)
  3. 當你迭代中的臺詞你文件,您需要觸發更新到您的進度條(myProgressBar.setValue(myProgressBar.getValue()+lineLength))。

幾個點通過批判的方式:

  • 構造函數不應該去,並且做的所有工作(即加載的文件,並彈出一個選項面板與取消的能力。構造函數應該只是做創建對象所需的工作,你可能想要考慮讓你的構造函數創建你的類,然後讓需要完成的工作分開調用,或者像init()方法那樣調用
  • 目前還不清楚你在做什麼JFrame作爲超類。JOptionPane我是一個類,它會彈出一個非常基本的模態對話框,其中包含一些文本,可能是圖標或輸入字段。它不是嵌入在對話框中的面板。
  • 由於JOptionPane是用於創建基本消息對話框的非常基本的構造,因此使用JDialog可能更容易,該構造也可以作爲模態。 JDialog將允許您隨意添加按鈕,其中作爲獨立的JOptionPane將要求您使用是/否,或是/否/取消或確定/取消等。
  • 如果您仍想使用JOptionPane,且僅顯示取消按鈕,您可以實例化JOptionPane(與使用實用程序show*方法相反),進度條爲messageJOptionPane.CANCEL_OPTIONoptionType參數。您仍然需要將其放入JDialog以使其可見。更多細節請參見this tutorial

的JOptionPane(構造)

創建的JOptionPane具有指定按鈕,圖標,消息,標題等。然後,必須將選項窗格添加到JDialog,在選項窗格上註冊屬性更改偵聽器,然後顯示對話框。有關詳細信息,請參閱停止自動對話框關閉。