2012-06-01 131 views
4

我試圖改變Nimbus LAF(外觀和感覺)中單個JProgressBar的顏色。該解決方案的工作,但它改變了所有JProgressBars的顏色:/如何更改Nimbus中單個JProgressBar的顏色?

UIDefaults defaults = UIManager.getLookAndFeelDefaults(); 
    defaults.put("nimbusOrange",defaults.get("nimbusBase")); 

在這種thread是另一種解決方案來改變JProgressBar的每個顏色單獨:

progress = new JProgressBar(); 
    UIDefaults defaults = new UIDefaults(); 
    defaults.put("ProgressBar[Enabled].backgroundPainter", new MyPainter()); 
    progress.putClientProperty("Nimbus.Overrides.InheritDefaults", Boolean.TRUE); 
    progress.putClientProperty("Nimbus.Overrides", defaults); 

不幸的是我不能讓它工作。我不知道在哪裏可以找到「MyPainter()」的庫。所以我試着用「defaults.get(」nimbusBase「)」和「Color.red」替換這個方法(不知道我在做什麼)。也沒有工作。

回答

4

1.可請您指示從

UIManager.put("ProgressBar.background", Color.orange); 
UIManager.put("ProgressBar.foreground", Color.blue); 
UIManager.put("ProgressBar.selectionBackground", Color.red); 
UIManager.put("ProgressBar.selectionForeground", Color.green); 

通知有效UIDefaultsMetalLookAndFeel

2.然後一個,請在Nimbus Defaults

3.then嘗試覆蓋相當於搜索JProgressBar with logics and with this Painter

+0

+1,還有很多事情我都要從鏈接中學習,你給我一次rega這件事情。我不知道這就是這麼簡單:-) –

+0

這可能是可怕的,直到那時,當你知道在哪裏使用標準顏色(XxxRenderer),當putNimbusColor(非compond)JComponents和Compoun&JButtons JComponents ... – mKorbel

+0

感謝您的快速和有益的答覆。現在一切都適用於我。 :D 對於任何未來的讀者:如果你的編譯器缺少「com.sun.java.swing.Painter.class」和/或「javax.swing.Painter.class」,你可以[download](http:// www .java2s.com/Code/JarDownload/org-netbeans-swing/org-netbeans-swing-tabcontrol.jar.zip)it here:http://www.java2s.com/Code/Jar/o/Downloadorgnetbeansswingtabcontroljar.htm – user1430180

相關問題