2012-06-01 50 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

相关问题