如何在Nimbus中更改单个JProgressBar的颜色?

时间:2012-06-01 08:58:23

标签: java swing look-and-feel jprogressbar nimbus

我正试图改变Nimbus LAF(Look And Feel)中单个JProgressBar的颜色。此解决方案确实有效,但它会更改所有JProgressBars的颜色:/

    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”替换这个方法(不知道我在做什么)。也没用。

1 个答案:

答案 0 :(得分: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);

注意UIDefaults的有效MetalLookAndFeel

2.然后请在Nimbus Defaults

中搜索等效内容

3.然后尝试覆盖JProgressBar with logics and with this Painter