Как автоматически изменить размер JFrame в соответствии с содержимым

StackOverflow https://stackoverflow.com/questions/1730170

Вопрос

Я создал индивидуальный JPanel который отображает изображения (назовем его MyPanel), я добавил это в JFrameContentPane.

Я хочу JFrame автоматически изменять размер в соответствии с MyPanel когда изображение меняется.

Похоже, мне нужно позвонить frame.pack() сделать это.Вызов pack() от MyPanel увеличивает связь, поэтому я не хочу этого делать.

Чтобы решить проблему, я продлил JFrame (давайте назовем это MyFrame) и сделал MyFrame наблюдатель, и MyPanel наблюдаемый.Всякий раз, когда изображение MyPanel отображает изменения, о которых он уведомляет слушателей, MyFrame для этого экземпляра.А потом MyFrame звонки pack() когда он получит уведомление.

Есть ли более плавный способ изменения размера JFrame по его содержанию?

Это было полезно?

Решение

Описанное вами решение кажется разумным.

Альтернативно, всякий раз, когда MyPanel меняет свое изображение, он может найти родительский фрейм и затем вызвать для него пакет().Если такого фрейма не существует, ничего не делайте.Нет необходимости создавать дополнительные классы, и связь будет настолько свободной, насколько вы сможете получить.Вы можете использовать SwingUtilities.getAncestorOfClass() сделать это легко.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top