Я создал JFrame
, инициализированный BorderLayout
и JScrollPane
как элемент CENTER
.FlowLayout Java не изменяет размер правильно
В области прокрутки установлены политики 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
?
Если удалить scroll pane
все вместе и поставить content panel
непосредственно в frame
, желаемый эффект обертывания происходит, но если frame
высота усадку меньше content panel
высоты он просто исчезает.
Идея состоит в том, что я хочу, чтобы мой labels
был обернут, когда это необходимо, но также всегда будет видимым, если это означает, что вам нужно прокручивать вверх/вниз.
Любые предложения о том, как исправить это?
Спасибо.
Кажется, что она работает точно так же, как нужно/ожидалось до сих пор! Будем надеяться, что Oracle инвестирует больше в Swing, чем Sun! Большое спасибо! – Jeach
Не могли бы вы сказать, что у FlowLayout есть ошибки или вы думаете, что это было намерение Sun вести себя таким образом? WrapLayout делает гораздо больше смысла, он должен быть частью Swing! – Jeach
Это не ошибка, потому что нет кода, который пытается динамически пересчитать предпочтительный размер. Это именно то, как кто-то задумал работать. – camickr