Хотя это может быть не решение, которое вы ищете, но исходя из ваших требований, кажется, что пользовательский LayoutManager
может достичь того, что вы ищете. При разработке и назначении пользовательского менеджера компоновки, который допускает разрывы строк для Container
(например, Panel
), должно быть возможно иметь Panel
, который разрешает линию брейки.
Компоновка компонентов внутри контейнера статья от Учебные руководства по Java предоставят общую информацию о том, как работают менеджеры по расположению в Java, и, в частности, Создание пользовательских Диспетчер макетов предоставит информацию о том, как настроить собственный диспетчер макетов для применения к Container
.
Поведение FlowLayout
(диспетчера макетов по умолчанию для Panel
) кажется довольно близким к поведению, за которым вы можете следовать. Добавление функциональности к разрыву строки похоже на недостающую часть.
Предложение: Возможно, пользовательский менеджер компоновки может иметь возможность добавить разрыв строки, имея Component
, представляющий разрыв строки, который можно добавить к Container
с помощью add()
метод.
Например, в пользовательском менеджере макетов есть константа класса Component
, такая как (гипотетический) LineBreakLayout.LINE_BREAK
, и добавление этого значения в Container
может дать указание менеджеру пользовательского макета перейти к следующей строке. Возможно, реализация может быть такой:
Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));
Приведенный выше гипотетический LineBreakLayout
будет отображать первый Label
в одной строке, а второй Label
во второй строке.