2011-04-30 78 views
1

我使用Nimbus LAF,我想更改一個簡單的JButton的背景。Nimbus上的JButton背景LAF

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

但是它不起作用,當我改變它的外觀和感覺時,它在Nimbus中不起作用。

我該怎麼辦?

感謝您的幫助。

+0

嗯...... WORKSFORME。 – kleopatra 2011-04-30 12:27:41

+0

我應該工作,也許你必須改變LookAndFeel後調用'SwingUtilities.updateComponentTreeUI(jbutton);' – oliholz 2011-05-02 15:00:30

回答

6

Nimbus使用Painter繪製不同的樣式。默認情況下,按鈕具有不是單一顏色的漸變。參見按鈕: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); 

順便說一句。在雨雲默認鍵「nimbusBase」將JButton基地,如果你改變這種顏色:

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

然後更改使用靈氣defalut藍色或混合色到新的顏色,不僅按鍵的一切。

我找到了一個不錯雨雲主題創建,它可以顯示出改變雨雲默認顏色到所有組件的效果:http://aephyr.googlecode.com/svn/trunk