FlowLayout Java не изменяет размер правильно
я создал JFrame
инициализации с BorderLayout
и JScrollPane
как его CENTER
элемент.
на панели прокрутки установлено значение VERTICAL_SCROLLBAR_ALWAYS
и HORIZONTAL_SCROLLBAR_NEVER
политики. Намерение мое frame
должен иметь контролируемую ширину, в то время как высота должна расти/сжиматься по мере добавления/удаления данных.
внутри scroll pane
, я добавил простой JPanel
(назовем его панелью содержимого), которая инициализируется с помощью FlowLayout
(и LEADING
политика).
для того чтобы испытать это я просто заполнить мой 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, и это работает для меня