我创建了此方法来检查进度栏中的值。当它减小时,它按预期工作,即变成红色,黄色和橙色。但是,当我增加该值时,颜色不会更新。因此,当它低于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();
}
最佳答案
就个人而言,我认为JProgressBar是错误的。我有自己的,更可定制的进度条制作方法。
而不是使用预制的JProgressBar,而是使用显示图形的原始方法:Canvas
创建canvas的子类,然后覆盖paint方法,添加变量以表示颜色和值,并添加setValue方法。在paint方法中,基于值setForeground(color)设置颜色,然后仅使用graphics参数绘制矩形(0,0,value,getHeight())。
我个人就是这样制作进度条的。这还具有以下优点:
A)您可以在画布上添加边框和背景色,就像进度条一样
B)您可以使用graphics.paintImage并将图像缩放/裁剪为正确的尺寸
希望这对您的进度条有所帮助:)
关于java - 根据其值更改能量条的颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30242029/