JButton фон на Нимбус LAF - PullRequest
1 голос
/ 30 апреля 2011

Я использую Nimbus LAF и хочу изменить фон простого JButton.

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

Но это не работает, когда я меняю внешний вид и чувствую, что это работает, но это неt работа в Nimbus.

Как я могу это сделать?

Спасибо за вашу помощь.

1 Ответ

6 голосов
/ 02 мая 2011

Нимб использует 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

...