Вопрос
Есть ли способ добавить элементы в gridlayout, который добавляет их по горизонтали, а не по вертикали?По сути, я хочу заполнить всю строку элементами до того, как она начнется со следующей.
Надеюсь, я ясно сформулировал свой вопрос.
Решение
Я бы предложил Расположение сетки и Ограничения GridBagConstraints
Это очень похоже на GridLayout, но с помощью GridBagConstraints вы можете указать координаты x и y компонента, и вы можете создавать интервалы столбцов и строк.
Это выглядело бы примерно так:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
JPanel panel = new JPanel();
JLabel label = new JLabel("foo");
panel.setLayout(layout);
c.gridx = 0;
c.gridy = 0;
panel.add(label, c);
Другие советы
Это является как работает GridLayout.
Сеточное описание, как следует из названия, размещает компоненты в соответствии с количеством столбцов и строк, указанных вами в конструктор, и перейдет к следующей строке, как только вы добавите указанное количество компонентов.
Судя по вашему вопросу, похоже, что Потоковое описание это больше соответствует тому, что вы ищете.
Редактировать:Я не уверен почему, но если вы укажете количество строк равным 0 (например new GridLayout(0, 9)
, кажется, это работает должным образом.
На самом деле вы должны использовать Групповой розыгрыш Это новинка (начиная с jdk 1.6) и довольно потрясающая.Это дает вам массу гибкости в верстке.
Я предполагаю, что вы хотели сказать, что хотите заполнить все строки в столбце, прежде чем переходить к следующему столбцу.Если это так, то используйте пользовательский менеджер компоновки