Я ищу способы увеличить приложение Java Swing. Это означает, что я хотел бы изменить размер всех компонентов в данной JPanel на определенный коэффициент, как если бы я сделал снимок экрана с пользовательского интерфейса и просто применил операцию "Масштаб изображения". Размер шрифта, а также размер флажков, текстовых полей, курсоров и т.д. Должны быть скорректированы. Можно масштабировать компонент, применяя преобразования к графическому объекту:
protected Graphics getComponentGraphics(Graphics g) {
Graphics2D g2d=(Graphics2D)g;
g2d.scale(2, 2);
return super.getComponentGraphics(g2d);
}
Это работает до тех пор, пока вы не заботитесь о самообновляющихся компонентах. Если у вас есть текстовое поле в вашем приложении, этот подход перестает работать, поскольку текстовое поле обновляется каждый раз, чтобы показать (мигающий) курсор. И поскольку на этот раз он не использует модифицированный графический объект, компонент появляется в прежнем месте. Есть ли возможность постоянно изменять компонент графического объекта? Также существует проблема с обработчиками событий щелчка мыши. Другая возможность - изменить все дочерние компоненты JPanel (setPreferredSize) на новый размер. Это не работает для флажков, так как отображаемое изображение флажка не меняет его размер. Я также подумал о программировании моего собственного менеджера компоновки, но я не думаю, что это сработает, поскольку менеджеры макета только изменяют позицию (и размер) объектов, но не могут масштабировать флажки (см. Предыдущий параграф). Или я ошибаюсь в этой гипотезе? У вас есть идеи, как можно достичь масштабируемого графического интерфейса Swing без программирования пользовательских компонентов? Я искал вращающиеся пользовательские интерфейсы, потому что проблема кажется знакомой, но я также не нашел удовлетворительного решения этой проблемы.
Спасибо за вашу помощь, Крис