Компоненты автоматического позиционирования в JPanel в Java - PullRequest
0 голосов
/ 28 декабря 2011

Я добавляю некоторые компоненты JCheckBox в JPanel во время выполнения.
Моя проблема в том, что все эти компоненты добавляются в одном месте.
Таким образом, они отображаются друг на друга.
Есть ли способ установить их для автоматического позиционирования?
Я имею в виду, что они находят место рядом с предыдущим компонентом в JPanel, и я избавляюсь от их ручного позиционирования.

Спасибо

1 Ответ

2 голосов
/ 28 декабря 2011

Краткий ответ - использование LayoutManager.Но LayoutManager работает очень по-разному, в зависимости от того, что вам нужно.Поэтому вам нужно знать, как вы хотите, чтобы ваши динамические флажки располагались.Где в вашем пользовательском интерфейсе будет расширяемая часть, чтобы поглотить потенциально N количество флажков.Не зная, как вы хотите визуально расположить компоненты, я не могу посоветовать вам, какой менеджер компоновки лучше всего подходит для вашей ситуации.

Общие рекомендации по LayoutManagers - это TableLayout очень хорошие динамические компоненты.Это очень прямо, и все еще очень сильно.Лучше вести себя и гораздо меньше кода требуется, чем, скажем, GridBagLayout, и проще для понимания, чем, скажем, SpringLayout или MigLayout.Получите это, узнайте, как использовать это, тогда действительно спросите себя.

Действительно ли мне нужно динамически создавать свой пользовательский интерфейс для флажков или я могу сделать это с помощью набора простых панелей в CardLayout и переключаться между ними на основе некоторого ввода (это намного проще, чем динамическое расположение элементов управленияво время выполнения).

http://java.net/projects/tablelayout

JPanel panel = new JPanel( new TableLayout(...) ); // sets the LayoutManager used by JPanel
panel.add( new JCheckBox(), "1 2" ); // add to row 1 column 2

Вы получите изображение.

...