Увеличение Java приложение Swing

Я ищу способы увеличить Java приложение Swing. Это означает, что я хотел бы изменить размер всех компонентов в данном JPanel данным фактором, как будто я сделаю снимок экрана UI и просто применил "Операцию" масштаба изображения. Размер шрифта, а также размер флажков, текстовых полей, курсоры и т.д. должны быть скорректированы. Возможно масштабироваться, компонент применением преобразовывает к графическому объекту:

 protected Graphics getComponentGraphics(Graphics g) {
  Graphics2D g2d=(Graphics2D)g;

  g2d.scale(2, 2);

  return super.getComponentGraphics(g2d);
 }

Это работает, пока Вы не заботитесь о самообновлении компонентов. Если у Вас есть текстовое поле в Вашем приложении, этот подход прекращает работать, так как текстовое поле обновляет себя каждую секунду для показа (мигающего) курсора. И так как это не использует измененный графический объект на этот раз, компонент появляется в старом местоположении. Существует ли возможность изменить объект графики компонентов постоянно? Существует также проблема с обработчиками событий нажатия мыши. Другая возможность состояла бы в том, чтобы изменить размер всех дочерних компонентов JPanel (setPreferredSize) к новому размеру. Это не работает на флажки, так как отображенное изображение флажка не изменяет свой размер. Я также думал о программировании моего собственного менеджера по расположению, но я не думаю, что это будет работать, так как менеджеры по расположению только меняют положение (и размер) объектов, но не могут масштабировать во флажки (см. предыдущий абзац). Или я неправильно с этой гипотезой? У Вас есть какие-либо идеи, как можно было достигнуть zoomable Swing GUI, не программируя пользовательские компоненты? Я искал поворотные пользовательские интерфейсы, потому что проблема кажется знакомой, но я также не нашел удовлетворяющего решения этой проблемы.

Спасибо за Вашу справку, Chris

13
задан Shirky 31 May 2010 в 15:20
поделиться

2 ответа

Вы можете попробовать библиотеку JXLayer .

В нем есть несколько инструментов, которые могут помочь вам увеличить изображение. Посмотрите примеры , показанные здесь . Я бы порекомендовал вам больше узнать о TransformUI из этой библиотеки. Из этого примера кажется, что это может помочь решить вашу проблему.

9
ответ дан 1 December 2019 в 22:56
поделиться

Масштабировать вид достаточно просто; преобразование координат мыши лишь немного сложнее. Вот элементарный пример. Я бы не использовал JComponent, хотя, возможно, имеет смысл разработать аналогичный ScaledComponent, который знает о геометрии. Вот тут-то и приходит на помощь предложение @Gnoupi об использовании библиотеки.

7
ответ дан 1 December 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: