GridLayout и количество строк и столбцов - PullRequest
4 голосов
/ 14 апреля 2011

Разве GridLayout не учитывает указанное вами количество строк и столбцов, если вы не заполните его полностью?

Я создаю GridLayout с 3 строками и 4 столбцами.Тем не менее, я только добавляю 9 компонентов.В итоге мне показываются эти 9 компонентов в сетке 3х3, а не в сетке 3х4 (только с одним компонентом в третьей строке (и двумя пробелами)).

Ответы [ 2 ]

29 голосов
/ 14 апреля 2011

, а не сетка 3х4 (только с одним компонентом в третьей строке (и двумя пробелами)).

Тогда вы должны создать свой GridLayout, используя:

setLayout(new GridLayout(0,4)); 

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

Нет необходимости в пустых компонентах.

4 голосов
/ 14 апреля 2011

Просто заполните пустые ячейки пустыми элементами (например, JLabel), например:

class MyFrame extends JFrame
{
    MyFrame()
    {
        setLayout(new GridLayout(3,4));

        for (int i = 0; i < 9; ++i)
            this.getContentPane().add(new JLabel(""+i));
        for (int i = 0; i < 3; ++i)
            getContentPane().add(new JLabel());

        pack();
        setVisible(true);
    }
}

Это раскладывает их как

0 1 2 3
4 5 6 7
9    
...