【发布时间】:2012-02-14 06:12:01
【问题描述】:
当使用JProgressBar 的setStringPainted() 时,进程完成量以百分比显示。
但是我如何自定义setStringPainted() 以便我可以显示剩余时间而不是百分比?
【问题讨论】:
标签: java swing jprogressbar
当使用JProgressBar 的setStringPainted() 时,进程完成量以百分比显示。
但是我如何自定义setStringPainted() 以便我可以显示剩余时间而不是百分比?
【问题讨论】:
标签: java swing jprogressbar
setString() 设置进度字符串。如果该属性是null,则只显示一个简单的百分比。文档中明确指出了这一点:
设置字符串
public void setString(String s)设置进度字符串的值。默认情况下,此字符串为
null,暗示使用简单百分比字符串的内置行为。如果您提供了自定义进度字符串并希望恢复为内置行为,请将字符串设置回null。仅当 isStringPainted 方法返回 true 时才会绘制进度字符串。
参数:
s– 进度字符串的值
【讨论】:
有趣的是(阅读:我很惊讶 :-) 你必须自己实现任何依赖于值的进度字符串,通过覆盖 getString
final JProgressBar bar = new JProgressBar() {
@Override
public String getString() {
int max = getMaximum();
return super.getString() + (max - getValue());
}
};
bar.setStringPainted(true);
ActionListener l = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
bar.setValue(bar.getValue() + 1);
}
};
bar.setString("missing: ");
new Timer(500, l).start();
【讨论】: