Смарт Вертикальный макет потока - PullRequest
2 голосов
/ 23 августа 2010

Я ищу следующее поведение в JPanel Layout (Swing): в основном, это будет располагать компоненты по вертикали, один ниже другого.

Если компоненты не могут поместиться вертикально в контейнере, следует добавить следующий элемент в новую строку.Это будет продолжаться динамически, добавляя новые строки по мере необходимости.

Это будет выглядеть примерно так, после добавления 3 меток:

+--------------------------+
|  label1                  |
|  label2                  |
|  label3                  |
+--------------------------+

После добавления: еще 2 меток:

+--------------------------+
|  label1  label4          |
|  label2  label5          |
|  label3                  |
+--------------------------+

Наконец, после добавления еще 2 меток это будет выглядеть так:

+--------------------------+
|  label1  label4  label7  |
|  label2  label5          |
|  label3  label6          |
+--------------------------+

Можно ли добиться такого поведения с помощью одного из текущих макетов?

Должен ли я создать его сам?

Как бы вы решили это решение?

Ответы [ 2 ]

1 голос
/ 23 августа 2010

Да, это возможно. Попробуйте использовать MigLayout .

Вот фрагмент кода, который иллюстрирует использование:

JPanel panel = new JPanel(new MigLayout("fill, flowY, wrap 4));
panel.add(new JLabel("row 1, column 1"));
panel.add(new JLabel("row 2, column 1"));
panel.add(new JLabel("row 3, column 1"));
panel.add(new JLabel("row 1, column 2")); // etc.
0 голосов
/ 23 августа 2010

Хорошо, решение найдено. Спасибо Борису, используя MigLayout :

LC lc_Y = (new LC()).fill().flowY();
lc_Y.setWrapAfter(ITEMS_PER_COLUMN);
JPanel panel = new JPanel(new MigLayout(lc_Y));

Теперь было бы идеально, если бы не было необходимости указывать количество элементов в столбце. Я имею в виду, что компоновка будет пытаться заполнить контейнер как можно большим количеством элементов в одной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...