3

进度条由以下代码创建

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

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

这就是我的进度条的样子

4

2 回答 2

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

}

结果图像(进度条正确显示所选颜色):

结果

于 2013-01-04T11:34:31.657 回答
2

还要考虑一个自定义,这里ProgressBarUI提到并显示在这里

图片

于 2013-01-04T11:38:59.183 回答