Change colors for JProgressBar with Nimbus?

Hassenboy picture Hassenboy · Aug 24, 2011 · Viewed 8.5k times · Source

does anyone know how to change the colors for JProgressBar when you use Nimbus LookAndFeel?

Answer

oliholz picture oliholz · Aug 24, 2011

I have overridden the whole nimbusOrange-Default Value, which change all ProgressBar-Colors and any other nimbusOrange. (InternalFrame - minimize Button)
here with nimbusBase (blue)

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

Better is to write a own Painter and set this to the UIManager via

UIManager.put("ProgressBar[Enabled].backgroundPainter", myPainter);

If You want to change the Color for only a single ProgressBar instance, you can use Per-component customization

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