2010-03-06 2 views
0

Я создал n JPanels, и в каждом JPanel я добавил 3 компонента. Добавьте эти JPanels в новый JPanel в виде строк. макет для n JPanels - FlowLayout, а для основной панели - BorderLayout. Метод setPrefferedSize() отлично работает для компонентов, которые я добавил в n JPanels, но он не работает для n JPanels. Я пытаюсь использовать npanels [i] .setPrefferedSize (новое измерение (300,25)) Я хочу, чтобы высота JPanel была равна высоте добавленных в нее компонентов (что равно 25). Есть ли какое-либо ограничение, что высота JPanel должна быть минимальным значением? пожалуйста, помогите я попробовал много вещей, но не работает .....Почему метод setPrefferedSize() не работает для JPanel?

ответ

1

Некоторые менеджеры компоновки, как правило, игнорируют настройку размера ...

Читал где-то, что может BorderLayout склонны игнорировать width для NORTH и SOUTH компоненты, height для EAST и WEST, как height и width игнорируются CENTER ...

Может ли это быть так?

Кроме того, вы можете предоставить скриншот или диаграмму, объясняющую, что происходит?

+0

добавление снимка экрана дает мне 5 минут – stillStudent

+0

, но я не могу найти здесь любую возможность добавить изображения ... вы можете мне помочь? – stillStudent

+0

Значок «Изображение» выглядит как картинка; это шестой слева; см. также http://stackoverflow.com/editing-help – trashgod

1

setPrefferedSize() метод работает нормально для компонентов

Там обычно нет необходимости устанавливать предпочтительный размер для компонентов. Swing автоматически рассчитает предпочтительный размер.

макет для русских JPanel, является FlowLayout ... , которые я добавил в п JPanel, но не работает для русских JPanel,

Опять же, нет необходимости устанавливать предпочтительный размер каждый panel. Размер будет рассчитываться автоматически на основе предпочтительного размера всех компонентов.

главная панель BorderLayout

Это не имеет смысла, так как вы не можете добавить «п» панелей к BorderLayout. Вы можете добавить только один компонент на север, центр и юг, чтобы вы могли иметь максимум 3 разных вертикально отображаемых панели. В этом случае, если вы используете frame.pack(), тогда каждая панель будет отображаться с предпочтительным размером. С другой стороны, если вы используете frame.setSize (300, 400), то высота центральной панели будет растянута.

Поскольку вы хотите, чтобы все панели одинакового размера, возможно, вы должны использовать GridLayout, иначе вы можете попробовать BoxLayout. Прочтите учебник Swing. Он объясняет все об использовании менеджеров компоновки.

Если вам нужна дополнительная помощь, разместите свой SSCCE.

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