2014-03-06 101 views
0

我想要進度條顯示正在閱讀的文件的百分比,但我似乎無法用我的代碼完成此操作。 進度條根本無法啓動。我認爲我的邏輯是一團糟。有關如何解決此問題的任何建議?下面如何根據文件的閱讀進度更新進度條?

代碼:

public void run() 
    { 
    progressBar.setIndeterminate(false); 

    try 
    { 
     FileReader fr = new FileReader(fileName); 
     BufferedReader br = new BufferedReader(fr); 

     long fileSize = fileName.length(); 

     String line = ""; 
     String concatString = ""; 

     keepGoing = true; 
     while((((line = br.readLine()) != null)) && keepGoing == true) 
     { 
      concatString += line; //concatenated string 
      int stringLength = concatString.length(); //length of concatenated string 
      int progressNum = (int) (stringLength/fileSize); //value to update progress bar 
       try 
       { 
       Thread.sleep(1000); 
       } 
       catch(InterruptedException ie) 
       { 
       ie.printStackTrace(); 
       }            
      progressBar.setValue(progressNum);           
     } 
     progressBar.setString("Finished file read..."); 
     progressBar.setIndeterminate(true); 

     synchronized(obj) 
     { 
      if(keepGoing == true) 
      { 
      keepGoing = false; 
      progressBar.setString("Halted!");     
      }       
     } 

    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    } 

    } 

請記住我是一個初學編程的。 編輯:我已經在我的進度條構造函數(0,100)中設置了最小值和最大值。

回答

1

你應該做

int progressNum = (int) (stringLength *100/fileSize); 

希望這有助於它轉換爲百分比

int progressNum = (int) (stringLength/fileSize); 

+1

也可能是一個好主意來調用'progressBar.setMaximum()'。 – vanza

+0

我已經在我的進度條構造函數(0,100)中設置了最小值和最大值。 – user2840682