我使用Nimbus LAF,我想改变简单JButton
的背景。
JButton jbutton = new JButton("test");
jbutton.setBackground(Color.BLACK);
但它不起作用,当我改变外观并感觉它有效但它在Nimbus中不起作用。
我该怎么做?
感谢您的帮助。
答案 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