【发布时间】:2015-07-26 08:19:16
【问题描述】:
我创建了这个方法来检查我的进度条中的值。它在减少时按预期工作,即变为红色、黄色和橙色。但是当我增加值时,颜色不会更新。所以当它低于 25 并变成红色时,当我增加能量条的值时,它仍然是那个颜色。我在这里做错了什么?提前致谢。
public void checkEnergyBar(JProgressBar EnergyBar){
if(EnergyBar.getValue()<25){
EnergyBar.setForeground(Color.RED);
}else if(EnergyBar.getValue()<51){
EnergyBar.setForeground(Color.YELLOW);
}else if(EnergyBar.getValue()<76){
EnergyBar.setForeground(Color.orange);
}else if(EnergyBar.getValue()<101){
EnergyBar.setForeground(Color.GREEN);
}
EnergyBar.repaint();
}
我做了这些改变,但仍然没有快乐。
public void checkEnergyBar(JProgressBar EnergyBar){
if(getEnergy()<26 ){
EnergyBar.setForeground(Color.RED);
}else if(getEnergy()<51 || getEnergy()>26){
EnergyBar.setForeground(Color.YELLOW);
}else if(getEnergy()<76 || getEnergy()>51){
EnergyBar.setForeground(Color.orange);
}else if(getEnergy()<101 || getEnergy()>76){
EnergyBar.setForeground(Color.GREEN);
}
EnergyBar.repaint();
}
【问题讨论】:
-
checkEnergyBar()方法绝对不依赖值变化的方向(因为它不存储任何以前的值),所以调用者代码有一些错误。 -
能量条从 100 开始,随着能量的减少,所有 if 语句都起作用。当我增加值时,它不会反过来做同样的事情。
-
我明白你在问什么,但我确定问题出在其他地方。我上面的评论说明了原因。
-
我在某些情况下必须通过线程更新进度条属性。尝试使用 SwingWorker。
-
理论上这听起来很简单。我很惊讶进度条如此有限。
标签: java progress-bar