【问题标题】:Displaying a custom progress string on a JProgressBar在 JProgressBar 上显示自定义进度字符串
【发布时间】:2012-02-14 06:12:01
【问题描述】:

当使用JProgressBarsetStringPainted() 时,进程完成量以百分比显示。

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

【问题讨论】:

    标签: java swing jprogressbar


    【解决方案1】:

    setString() 设置进度字符串。如果该属性是null,则只显示一个简单的百分比。文档中明确指出了这一点:

    设置字符串

    public void setString(String s)

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

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

    参数:

    s – 进度字符串的值

    【讨论】:

    • 随机注释:如果您发现此答案有帮助,您可以投票(问题左侧的向上三角形)。如果它解决了您的问题,您可以接受它(问题左侧的绿色复选标记)。
    • 这对 OPs 要求没有帮助显示剩余时间而不是百分比 - setString 导致按原样返回给定文本,与当前值没有任何关系
    • 嗯,时间估计并不是我读到的问题的一部分。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多