我似乎无法理解为什么在使用某些值时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-2500),则可以通过 progressBar.setMaximum(2500)
告诉JProgressBar。这样,您就不需要barValue
变量,只需让进度条知道您的实际进度即可。
关于java - JProgressBar更新值的行为(线程),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5360450/