Изменить размер JFrame в соответствии с содержимым изображения JPanel? - PullRequest
0 голосов
/ 07 ноября 2010

Я использую NetBeans для разработки простого браузера изображений.У меня есть класс ImageBrowser, который расширяет JFrame (создал его, щелкнув правой кнопкой мыши проект NetBeans, затем Создать -> Форма JFrame), и внутри него есть JPanel и JToolbar с JButtons, сгенерированные как эскизы изображений изкаталог, который выбирает пользователь.

При нажатии на миниатюру изображения изображение отображается целиком на этом главном JPanel.В основном изображения имеют разные размеры, и я хочу, чтобы JFrame (т. Е. Все окно) автоматически подстраивалось под размер изображения.

Я попытался вызвать .pack() для основного `JFrame 'каждый раз, когда изменяется содержимое JPanel (т. е. когда пользователь щелкает по миниатюре и запускает ActionEvent), но при этом возникает ошибка: на

нестатический метод pack () нельзя ссылаться из статического содержимого

Так что я довольно застрял в этом, и мне интересно, есть ли способ сделать это.Если есть, возможно ли также установить максимальный лимит на размер окна JFrame?

Что касается макета, JFrame - это бесплатный макет, созданный с помощью разработчика графического интерфейса пользователя NetBeans.

1 Ответ

0 голосов
/ 08 ноября 2010

На статический метод нельзя ссылаться на нестатический метод pack ()

Не используйте статические методы в вашем приложении.Там нет необходимости делать это.Единственным статическим методом должен быть метод main () и метод «createAndShowGUI», при условии, что вы следуете примеру кода, найденному в Swing, примеры .

. Вы можете найти окно для упаковки () с помощью

SwingUtilities.windowForComponent(...);

Вы получаете источник из ActionEvent, а затем используете этот компонент, чтобы найти окно для упаковки.

также возможно установить максимальное ограничение наразмер окна JFrame?

Есть ли пакет ().Тогда вы всегда можете переопределить максимальный размер, вызывая setSize () в окне, если размеры превышают ваш предел.

Я также согласен, что не стоит постоянно менять размер окна постоянно каждый разизображение изменилось.

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

...