Nimbus LAF上的JButton背景

时间:2011-04-30 08:32:04

标签: swing jbutton nimbus

我使用Nimbus LAF,我想改变简单JButton的背景。

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

但它不起作用,当我改变外观并感觉它有效但它在Nimbus中不起作用。

我该怎么做?

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

Nimbus使用Painter绘制不同的样式。默认情况下,Button具有渐变而不是单个Color。请参阅按钮:Nimbus Defaults List

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

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 defalut-blue或辅助颜色的所有内容更改为新颜色,而不仅仅是按钮。

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