Search code examples
javaswingcolorsjprogressbarnimbus

Change colors for JProgressBar with Nimbus?


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


Solution

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