2013-01-04 57 views
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。在另一種方法中,顯示的字符串的最大值和當前值被操縱,而不是更多。

我真的不知道爲什麼這個非常奇怪的灰色條紋顯示在頂部。如果我水平顯示進度條,他們是不是有...

This is how my progress bar looks like

+7

爲了更好地幫助越早,張貼[SSCCE(http://sscce.org/)。 –

回答

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