垂直进度条具有奇怪的背景,不可更改

时间:2013-01-04 10:23:57

标签: java swing jprogressbar

进度条由以下代码

创建
    bar = new JProgressBar(JProgressBar.VERTICAL);
    bar.setEnabled(true);

    bar.setBackground(Color.YELLOW);
    bar.setForeground(Color.GREEN);

    bar.setStringPainted(true);     

    getReflectedComponent().setLayout(new BorderLayout());
    getReflectedComponent().add(bar, BorderLayout.CENTER);

请注意,getReflectedComponent()返回一个JComponent。在另一种方法中,显示的字符串最大值和当前值被操纵,而不是更多。

我真的不知道为什么这个非常奇怪的灰色条纹显示在顶部。如果我水平显示进度条,它们就不存在......

This is how my progress bar looks like

2 个答案:

答案 0 :(得分:3)

我没有注意到您的代码存在问题,因此它必须来自您未向我们展示的其他内容(还有一个提供SSCCE的论据)

这是一个让自己开始的例子:

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;

public class TestScrollbars {

    protected void initUI() {
        final JFrame frame = new JFrame();
        frame.setTitle(TestScrollbars.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JProgressBar bar = new JProgressBar(JProgressBar.VERTICAL);
        bar.setEnabled(true);

        bar.setBackground(Color.YELLOW);
        bar.setForeground(Color.GREEN);

        bar.setStringPainted(true);
        bar.setString("2000 g");
        bar.setValue(65);
        frame.setLayout(new BorderLayout());
        frame.add(bar, BorderLayout.CENTER);
        frame.setSize(500, 400);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestScrollbars().initUI();
            }
        });
    }

}

生成的图像(进度条正确显示所选颜色):

result

答案 1 :(得分:2)

另请考虑自定义ProgressBarUI,提及here并显示here

image