1

我使用 Nimbus LAF,我想改变一个简单的JButton.

JButton jbutton = new JButton("test");
jbutton.setBackground(Color.BLACK);

但它不起作用,当我改变外观和感觉时它起作用但它在 Nimbus 中不起作用。

我该怎么做?

谢谢你的帮助。

4

1 回答 1

7

Nimbus 使用 Painter 绘制不同的样式。默认情况下,按钮的渐变不是单一颜色。请参阅按钮: Nimbus 默认值列表

您可以编写自己的 Painter 并覆盖默认值。或者您使用“Button.background”键覆盖背景颜色并使用默认画家。

UIDefaults overrides = new UIDefaults();
overrides.put("Button.background", Color.RED);
jbutton.putClientProperty("Nimbus.Overrides", overrides);
jbutton.putClientProperty("Nimbus.Overrides.InheritDefaults", Boolean.TRUE);
SwingUtilities.updateComponentTreeUI(jbutton);

或者,如果您想更改所有按钮的颜色,请尝试:

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("Button.background",  Color.RED);

顺便提一句。JButton 基于 Nimbus 默认键“nimbusBase”,如果您更改此颜色:

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put( "nimbusBase", Color.RED );

然后您将使用 nimbus 默认蓝色或辅助颜色的所有内容更改为您的新颜色,而不仅仅是按钮。

我找到了一个不错的 Nimbus Theme Creator,它可以显示将 Nimbus 默认颜色更改为所有组件的效果:http: //aephyr.googlecode.com/svn/trunk

于 2011-05-02T12:41:05.497 回答