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