Java 垂直进度条有奇怪的背景,不能更改

Java 垂直进度条有奇怪的背景,不能更改,java,swing,jprogressbar,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 BorderL

进度条由以下代码创建

    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。在另一种方法中,显示的字符串“最大值”和“当前值”被操纵,而不是更多

我真的不知道为什么顶部会显示这种奇怪的灰色条纹。如果我水平显示进度条,它们不在那里


我没有注意到您的代码存在问题,因此它一定来自您没有向我们展示的其他内容(另一个参数提供了一个)

下面是一个让你自己开始的例子:

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();
            }
        });
    }

}
以及生成的图像(其中进度条正确显示所选颜色):


也要考虑一个习惯>代码> PrasssBARIU,提到和显示。


要更快地获得更好的帮助,请发布一个。