在JProgressBar上显示自定义进度字符串

时间:2012-02-14 06:12:01

标签: java swing jprogressbar

使用setStringPainted() JProgressBar时,流程完成量以百分比显示。

但如何自定义setStringPainted()以便我可以显示剩余时间而不是百分比吗?

2 个答案:

答案 0 :(得分:4)

setString()设置进​​度字符串。如果该属性为null,则只显示一个简单的百分比。这在文档中清楚地指出:

  

了setString

     

public void setString(String s)

     

设置进度字符串的值。默认情况下,此字符串为null,表示使用简单百分比字符串的内置行为。如果您提供了自定义进度字符串并希望恢复为内置行为,请将字符串设置回null

     

仅当isStringPainted方法返回true时才会绘制进度字符串。

     

参数:

     

s - 进度字符串的值

答案 1 :(得分:3)

有趣的是(读:我很惊讶:-)你必须自己实现任何依赖于价值的进度字符串,重写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();