Как изменить внешний вид Java Swing без перезапуска приложения? - PullRequest
6 голосов
/ 22 сентября 2010

Есть ли конкретный способ изменить внешний вид свинг-приложения без необходимости перезапуска приложения каждый раз, когда пользователь изменяет LAF?

Я ищу решение, в котором можно выбратьLAF из диалогового окна конфигурации, и он изменяется непосредственно при применении, не прибегая к тому, чтобы попросить пользователя перезапустить приложение.

В настоящее время я помню выбранный LAF в файле свойств и установил его при запуске, прежде чем какое-либо окнобыл открыт.

1 Ответ

5 голосов
/ 22 сентября 2010

Из Java-учебника :

Сначала вам нужно настроить новый внешний вид, вызвав UIManager.setLookAndFeel:

UIManager.setLookAndFeel(lnfName);

Затем, чтобычтобы существующие компоненты отражали новый внешний вид, вызовите метод SwingUtilities.updateComponentTreeUI для каждого контейнера верхнего уровня (диалогов, фреймов ...).Вы также можете изменить размер каждого контейнера верхнего уровня, чтобы приспособиться к изменениям в размере содержащихся в нем компонентов:

SwingUtilities.updateComponentTreeUI(frame);  // update components
frame.pack();                                 // adapt container size if required
...