JButton фон на Нимбус LAF
Я использую Nimbus LAF и хочу изменить фон простого JButton
,
JButton jbutton = new JButton("test");
jbutton.setBackground(Color.BLACK);
Но это не работает, когда я изменяю внешний вид и чувствую, что это работает, но это не работает в Nimbus.
Как мне это сделать?
Спасибо за вашу помощь.
1 ответ
Нимб использует Painter для рисования разных стилей. По умолчанию кнопка имеет градиент, а не один цвет. Смотрите кнопку: список значений Nimbus по умолчанию
Вы можете написать свой собственный Painter и переопределить настройки по умолчанию. Или вы переопределяете цвет фона с помощью клавиши "Button.background" и используете по умолчанию 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);
Btw. JButton базируется на ключе Nimbus по умолчанию "nimbusBase", если вы измените этот цвет:
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put( "nimbusBase", Color.RED );
затем вы заменяете все, что использует синий или вторичный цвет нимба на ваш новый цвет, а не только кнопки.
Я нашел хорошего создателя тем Nimbus, который может показать эффект изменения цвета Nimbus по умолчанию для всех компонентов: http://aephyr.googlecode.com/svn/trunk