【问题标题】:How to change the color of a single JProgressBar in Nimbus?如何更改 Nimbus 中单个 JProgressBar 的颜色?
【发布时间】:2012-06-01 08:58:23
【问题描述】:

我正在尝试更改 Nimbus LAF(外观和感觉)中单个 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”替换这个方法(不知道我在做什么)。也没用。

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

    • +1,关于这个东西,我还需要从你曾经给我的链接中学到很多东西。我不知道它这么简单:-)
    • 这可能很糟糕,直到你知道在哪里使用标准颜色(XxxRenderer),当 putNimbusColor(非复合)JComponents 和 Compoun & JButtons JComponents...
    • 感谢您快速而有帮助的回复。现在一切都对我有用。 :D 对于任何未来的读者:如果您的编译器缺少“com.sun.java.swing.Painter.class”和/或“javax.swing.Painter.class”,您可以在这里downloadjava2s.com/Code/Jar/o/Downloadorgnetbeansswingtabcontroljar.htm跨度>
    • @Matthieu 不确定我是否理解正确,在链接的帖子中使用了 FillPainter,它只用一种颜色填充可用的矩形,为了更好的外观需要在 Painter 中使用 GradientPaint
    • @mKorbel,对不起,我对这个主题的太多搜索和太多不同的答案感到困惑。你的帖子更清楚了,hvala! :)
    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多