Заполните пустое пространство FlowLayout
У меня есть панель разметки, которая имеет текстовое поле внутри. Хотя текстовое поле не такое широкое, но я хочу разместить компоненты на следующей строке. Как мне заполнить оставшееся место пустым полем?
3 ответа
Если вам нужен более детерминированный контроль над тем, как размечены ваши компоненты, вам следует рассмотреть возможность использования другого менеджера компоновки, такого как BoxLayout, GridLayout или GridBagLayout. Возможно, вы сможете обманом заставить FlowLayout делать то, что вы хотите, но что произойдет, если пользователь изменит размер окна? Или меняет свой шрифт DPI на уровне ОС? Вместо того, чтобы ваши компоненты находились на разных строках в качестве побочного эффекта от помещения фиктивных компонентов в FlowLayout, рассмотрите возможность более явного выражения вышеуказанного отношения с помощью менеджера компоновки, в который встроены эти концепции (например, GridBagConstraints.gridy
).
Не нужно переоценивать вещи здесь. Это простое решение работает (по крайней мере, для меня):
panelObject.setLayout(new FlowLayout(FlowLayout.LEADING));
Это сбрасывает компоненты слева на компьютере с направлением чтения по умолчанию слева направо (это называется ориентацией) и наоборот на компьютерах с направлением чтения справа. Таким образом, он хорошо поддается интернационализации. Если вы хотите, чтобы компоненты располагались слева на всех компьютерах (и пустое пространство справа), используйте new FlowLayout(FlowLayout.LEFT)
,
Спасибо @nIcE cOw за то, что он предложил это решение в комментарии под вопросом и позволил мне опубликовать его в качестве ответа.