FlowLayout Java не изменяет размер правильно - PullRequest
6 голосов
/ 03 августа 2010

Я создал JFrame, инициализированный BorderLayout и JScrollPane в качестве элемента CENTER.

Панель прокрутки установлена ​​с политиками VERTICAL_SCROLLBAR_ALWAYS и HORIZONTAL_SCROLLBAR_NEVER.Цель моего frame - иметь контролируемую ширину, в то время как высота должна увеличиваться / уменьшаться по мере добавления / удаления данных.

Внутри моего scroll pane я добавил простой JPanel (давайте вызовемэто панель содержимого), которая инициализируется с помощью FlowLayoutLEADING policy).

Чтобы проверить это, я просто заполняю content panel 20 JLabel("Item " + n) компонентами, где nявляется счетчиком цикла.

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

Кто-нибудь знает, почему flow layout не переносится, когда задействован scroll pane?

ЕслиЯ удаляю scroll pane все вместе и помещаю content panel прямо в frame, желаемый эффект обертывания происходит, но если высота frame уменьшается меньше, чем высота content panel, она просто исчезает.

Идея состоит в том, что я хочу, чтобы мой labels был обернут при необходимости, но также всегда должен быть видимым, если это означает необходимость прокручивать вверх / вниз.

Есть предложения, как это исправить?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 03 августа 2010

Wrap Layout дает объяснение и решение.

0 голосов
/ 03 ноября 2014

Если вы работаете с дизайнером, вам нужно установить для свойства PreredSize значение NULL (удалить установленное значение), а затем установить предпочтительный размер, нажав кнопку [...] с тремя точками рядом с именем свойства PreredSize и поставить предпочтительное значение.

Я столкнулся с той же проблемой, и она работает для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...