Заполните пустое пространство FlowLayout - PullRequest
2 голосов
/ 03 марта 2012

У меня есть панель разметки, внутри которой есть текстовое поле.Хотя текстовое поле не такое широкое, но я хочу разместить компоненты на следующей строке.Как мне заполнить оставшееся место пустым полем?

Ответы [ 3 ]

3 голосов
/ 03 марта 2012

Если вам нужен более детерминированный контроль над тем, как размечены ваши компоненты, вам следует рассмотреть возможность использования другого менеджера компоновки, такого как BoxLayout, GridLayout или GridBagLayout. Возможно, вы сможете обманом заставить FlowLayout делать то, что вы хотите, но что произойдет, если пользователь изменит размер окна? Или меняет свой шрифт DPI на уровне ОС? Вместо того, чтобы ваши компоненты находились на разных строках в качестве побочного эффекта от помещения фиктивных компонентов в FlowLayout, рассмотрите возможность более явного выражения отношения выше / ниже с помощью диспетчера компоновки, в который встроены эти концепции (например, GridBagConstraints.gridy).

2 голосов
/ 03 марта 2012

Заполните его пустым JPanel:

new JPanel();
1 голос
/ 30 апреля 2017

Здесь не нужно слишком усложнять вещи.Это простое решение работает (по крайней мере, для меня):

panelObject.setLayout(new FlowLayout(FlowLayout.LEADING));

Это приведет к сбросу компонентов слева на компьютере с направлением чтения по умолчанию слева направо (это называется ориентацией), иобратный путь на компьютерах с направлением чтения справа.Таким образом, он хорошо поддается интернационализации.Если вы хотите, чтобы компоненты располагались слева на всех компьютерах (и пустое пространство справа), используйте new FlowLayout(FlowLayout.LEFT).

Спасибо @nIcE cOw за предложение этого решения в комментарии под вопросом и дляпозволив мне опубликовать это как ответ.

...