FlowLayout Java не изменяет размер правильно

я создал JFrame инициализации с BorderLayout и JScrollPane как его CENTER элемент.

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

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

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

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

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

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

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

любые предложения о том, как это исправить?

спасибо.

2 ответов


Обернуть Макет дает объяснение и решение.


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

Я столкнулся с той же problème, и это работает для меня