Изменение размера шрифта во время выполнения в приложении Swing - PullRequest
4 голосов
/ 23 февраля 2010

Многие веб-сайты в наши дни имеют возможность позволить пользователю увеличивать или уменьшать размер шрифта, который появляется на сайте. Я хотел бы добавить аналогичную функциональность в свое приложение Java Swing с возможностью изменить шрифт либо на больший размер, либо вернуться к стандартному размеру. Пользователь сможет сделать это во время выполнения с помощью пункта меню.

Текущая версия моего кода работает не очень хорошо - код перебирает ключи, хранящиеся в UIManager / UIDefaults, и для каждого ключа, который является шрифтом, мой код получает новый шрифт с целевым размером точки (например, если он больше, то размер новой точки обычно равен 16, в противном случае, если он идет к обычному размеру, обычно это 11), а затем помещает этот ключ и новый шрифт в UIManager. После этого код вызывает SwingUtilities.updateComponentTreeUI () для фрейма, а затем упаковывает фрейм.

Код увеличит шрифт один раз, но переключение на обычный размер не дает никакого эффекта. Это особенно заметно в строке меню.

Правильно ли я поступаю? Стоит ли вместо этого создать новый внешний вид с большим размером точки или использовать какой-либо другой метод целиком?

Заранее спасибо за любую помощь.

1 Ответ

4 голосов
/ 23 февраля 2010

Код увеличит шрифт один раз, но переключение на обычный размер имеет без эффекта

Я считаю, что вам нужно обновить UIManager с помощью FontUIResource, а не только шрифта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...