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