【问题标题】:JProgressBar displaying weird orang waveJProgressBar 显示奇怪的橙色波浪
【发布时间】:2013-06-05 12:36:02
【问题描述】:

我正在使用 JProgressBar 在我的框架上显示一个进度条。进度条设置为不确定模式,因为我不知道任务何时结束。而不是显示正常的进度条,而是显示一个奇怪的橙色波浪。

当任务运行时,波浪会继续移动。结束后,该值设置为 100,并以表格或橙色块(它们也在移动!)显示。我正在使用以下代码来显示进度条

Container content = this.getContentPane();
content.setLayout(null);    
prog = new JProgressBar(0, 100);
prog.setValue(0);
prog.setStringPainted(true);
Dimension preferredSize;
preferredSize=new Dimension();
preferredSize.width=300;
preferredSize.height=15;
prog.setPreferredSize(preferredSize);
content.add(prog);
Insets insets = content.getInsets();
Dimension size;
size = prog.getPreferredSize();
prog.setBounds(30+insets.left, 180+insets.top, size.width, size.height);

如何将它改回正常的进度条?

【问题讨论】:

  • 为了更好的帮助,请尽快发布SSCCE,简短,可运行,可编译,仅关于 JFrame 和 JProgressBar,也许使用 LookandFeel 可能很重要
  • 这看起来像 Nimbus 外观的正常进度条
  • 它是否应该在其值设置为 100 后仍在移动

标签: java swing jprogressbar nimbus


【解决方案1】:

我没有深入研究,但它可能是 Nimbus LaF 的错误。
无论如何,为了让橙色块停止移动(当它的值设置为 100 时),您似乎还需要调用:

prog.setIndeterminate(false);

如果你想“自动化”这个,你可以继承 JProgressBar,例如:

prog = new JProgressBar(0, 100) {
    public void setValue(int newValue) {
        super.setValue(newValue);
        if (newValue >= this.getMaximum()) {
            this.setIndeterminate(false);
        }
    }
};
prog.setValue(0);
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2017-04-10
    • 2017-03-01
    相关资源
    最近更新 更多