2010-11-07 2 views
0

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

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

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

non-static method pack() cannot be referenced from static content

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

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

+0

Может быть, лучше не изменять размер окна, а наоборот, масштабировать изображение? – Rogach

+0

Да, я решил сделать это после того, как реальные браузеры изображений масштабируют изображение вниз вместо окна вверх. Довольно очевидно, но это просто пошло мне в голову, ха-ха. Спасибо anyways – Flynn

ответ

0

non-static method pack() cannot be referenced from static content

Не используйте статические методы в своем приложении. Нет необходимости делать это. Единственным статическим методом должен быть метод main() и метод createAndShowGUI, предполагающий, что вы следуете примеру кода, найденного в Swing tutorial examples.

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

SwingUtilities.windowForComponent(...); 

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

is it also possible to set a maximum limit on the JFrame window size?

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

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

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

+0

Большое спасибо camickr. Я решил уменьшить масштаб изображения, и я установил рамку окна на фиксированный размер. – Flynn

Смежные вопросы