2011-03-19 138 views
2

我似乎無法理解爲什麼當使用某些值時,JProgressBar會凍結並停止計算。例如,下面的代碼在所有的時間裏只顯示零;JProgressBar更新值行爲(線程)

 ... 
     int value = (100/maxGenerations)*i;  //maxGenerations = 2500 
     final int barValue = value; 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
      progressBar.setValue(barValue); 
     } 
    }); 

但是如果用相同的實現我這樣做它的作品(當然不是準確就是垃圾計算):

 ... 
     int value = (i/100);   //where 'i' increments until = 2500 
     final int barValue = value; 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
      progressBar.setValue(barValue); 
     } 
    }); 

任何想法,爲什麼?

+0

因此,您希望進度條只更新i值的每100次更改嗎? – MeBigFatGuy 2011-03-19 06:04:58

回答

1

如果你知道進展的範圍是什麼(可能是0 - 2500),你可以通過progressBar.setMaximum(2500)告訴JProgressBar。這種方式你不需要一個barValue變量,只需讓進度條知道你的真實進度。