我想使用JProgressBar
并对其进行扩充以打印其当前值以及图形条。
我猜测最好的方法是覆盖paintComponent:
@Override protected void paintComponent(Graphics g) {
// Let component paint first
super.paintComponent(g);
// paint my contents next....
}
但我不确定......有什么建议吗?
答案 0 :(得分:8)
我建议你使用自己的API:
public void setStringPainted(boolean b)
设置stringPainted属性的值,该属性确定进度条是否应呈现进度字符串。默认值为false,表示不绘制任何字符串。某些外观可能不支持进度字符串,或者仅当进度条处于确定模式时才支持它们。
和
public void setString(String s)
设置进度字符串的值。默认情况下,此字符串为null,表示使用简单百分比字符串的内置行为。如果您提供了自定义进度字符串并希望恢复为内置行为,请将字符串设置回null。 仅当isStringPainted方法返回true时,才会绘制进度字符串。
参考总是是一件好事。 :)
请注意,要在运行期间启用编辑值,您应该考虑将ChangeListener
附加到进度条。
答案 1 :(得分:1)
基于杰克回答的工作解决方案:
final JProgressBar pbar = ...
pbar.setStringPainted(true);
final NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(true);
pbar.setString(nf.format(pbar.getValue()));
pbar.addChangeListener(new ChangeListener()
{
@Override public void stateChanged(ChangeEvent event) {
pbar.setString(nf.format(pbar.getValue()));
}
});