Обновление Java UIManager по умолчанию и перекрасить компоненты - PullRequest
1 голос
/ 26 апреля 2011

Я использую UIManager для настройки некоторых компонентов Swing, как в примере ниже,

UIManager.put("TextField.background", COLOR_BG);
UIManager.put("TextField.foreground", COLOR_FG);
UIManager.put("TextField.selectionBackground", COLOR_SB);
UIManager.put("TextField.selectionForeground", COLOR_SF);
UIManager.put("TextField.caretForeground", COLOR_CF);

Теперь, после запуска приложения, я хочу изменить некоторые цвета, поэтому я снова вызываю UIManager.put для обновления UIManager., но компоненты не обновляются, я попытался repaint (), revalidate (), updateUI () безуспешно.

Спасибо

1 Ответ

3 голосов
/ 26 апреля 2011

Я полагаю, что когда вы добавляете свои цвета в UIManager, вам нужно обернуть их тогда в классе ColorUIResource. Это позволяет UIManager думать, что они являются частью LAF по умолчанию, а не пользовательским цветом, поэтому он сбрасывает значения при обновлении пользовательского интерфейса.

Вам все равно нужно будет использовать:

SwingUtilities.updateComponentTreeUI(...);

Прочтите раздел из учебника по Swing на Изменение внешнего вида для получения дополнительной информации.

...