2012-03-02 3 views
2

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

+1

использовать LayoutManager, который делает то, что вы хотите – kleopatra

+1

Чтобы разместить компоненты в крайнем левом углу с помощью 'FlowLayout', вы можете сделать это,' panelObject.setLayout (new FlowLayout (FlowLayout.LEFT)); позволяют размещать компоненты из крайних левых, а не из середины, поскольку в случае нет аргумента 'FlowLayout()' constructor. –

+1

Ваш комментарий решил мою проблему в отношении 15 нажатий клавиш, @nIcEcOw. Огромное спасибо. Такой полезный комментарий заслуживает того, чтобы его публиковали как ответ. :-) –

ответ

3

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

+0

Да, соглашайтесь 1+. Также @Soler: поймите, что вы можете встраивать JPanels, каждый из которых использует свой собственный менеджер компоновки и тем самым создает сложные графические интерфейсы, но только с использованием простых макетов. –

2

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

new JPanel(); 
+0

Но у меня есть JLabel уже внутри панели, которая в настоящее время сосредоточена по какой-то странной причине, после игры о том, что я узнал больше ярлыков, я добавляю больше этой ярлыки сдвигается влево. Я хочу переместить ярлык полностью влево, но мне нужно как-то добавить пустое пространство, JPanel, похоже, не работает для этого. –

+0

нет - это даже не взломать (как ни странно, проблема описана) – kleopatra

1

Не нужно излишне усложнять ситуацию здесь. Это простое решение работает (по крайней мере, он сделал для меня):

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

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

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