2

我似乎无法理解为什么在使用某些值时 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);
        }
     });

任何想法为什么?

4

1 回答 1

1

如果您知道进度范围是多少(大概是 0 - 2500),您可以通过progressBar.setMaximum(2500). 这样你就不需要barValue变量,只需让进度条知道你的真实进度。

于 2011-03-19T06:06:31.720 回答