Gridlayout добавляет элементы только по вертикали, а не по горизонтали

Я делаю редактор уровней для простой игры, которую создаю, в редакторе уровней я хочу, чтобы несколько кнопок и меток были выровнены по сетке. В значительной степени то, для чего был разработан gridlayout.

Следующий код по какой-то нечестивой причине, не зависящей от меня, добавляет только элементы друг под другом, например:

Ширина карты:

Высота карты:

Глубина карты:

это должно выглядеть так:

Ширина карты: Высота карты:

Глубина карты:

Я пытался в течение часа, и я в значительной степени озадачен, это не должно потребовать столько усилий, чтобы заставить его работать, но это так.

    private void drawUiElements()
{
    int xLoc = (int) (dim.width * 0.75);
    int yLoc = 0;
    int width = (int) (dim.width * 0.25);
    int height = dim.height;

    JPanel buttonContainer = new JPanel();
    buttonContainer.setLayout(new GridLayout(16, 2, 5, 5));
    buttonContainer.setBounds(xLoc, yLoc, width, height);
    buttonContainer.setName("buttonContainer");

    JLabel labelx = new JLabel("Map Width:");
    JLabel labely = new JLabel("Map Height:");
    JLabel labelz = new JLabel("Map Depth:");

    buttonContainer.add(labelx, "1");
    buttonContainer.add(labely, "2");
    buttonContainer.add(labelz, "3");

    add(buttonContainer);
}

Спасибо.


person user1870238    schedule 02.12.2012    source источник


Ответы (1)


При использовании GridLayout нельзя добавлять компоненты в определенную ячейку. Вы можете установить начальное количество строк равным 0, чтобы компоненты заполнялись строками сначала.

buttonContainer.setLayout(new GridLayout(0, 2, 5, 5));

См .: Как использовать GridLayout

person Reimeus    schedule 02.12.2012
comment
Но api указывает, что компоненты добавляются сначала строкой, а не столбцом. docs.oracle.com/javase/6/docs/api (рисунок 1) - person user1870238; 02.12.2012
comment
Это будет работать только в том случае, если вы укажете начальное количество строк 0, чтобы все возможные строки были заполнены до того, как будет пересчитан макет. См. Обновление - person Reimeus; 02.12.2012