进度条由以下代码创建
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。在另一种方法中,显示的字符串的最大值和当前值被操纵,而不是更多。
我真的不知道为什么这个非常奇怪的灰色条纹显示在顶部。如果我水平显示进度条,它们不在那里......
最佳答案
我没有观察到你的代码有问题,所以它一定来自于你没有向我们展示的其他东西(提供一个 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();
}
});
}
}
以及生成的图像(其中进度条正确显示所选颜色):
关于java - 垂直进度条有奇怪的背景,不可更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155269/