【问题标题】:How do I make progress bars update according to the reading progress of a file?如何根据文件的读取进度更新进度条?
【发布时间】:2014-03-06 03:20:10
【问题描述】:

我希望进度条显示正在读取的文件的百分比,但我的代码似乎无法做到这一点。 进度条根本不会启动。我认为我的逻辑是一团糟。有关如何解决此问题的任何建议?

代码如下:

    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)。

【问题讨论】:

    标签: java progress


    【解决方案1】:

    你应该把它转换成百分比

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

    通过做

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

    希望这会有所帮助。

    【讨论】:

    • 打电话给progressBar.setMaximum()也可能是个好主意。
    • 我已经在我的进度条构造函数中设置了最小值和最大值(0, 100)。
    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多