GridLayout和行数和列数

Pau*_*ers 4 java swing grid-layout

如果你没有完全填充它,GridLayout是否不会遵守你指定的行数和列数?

我正在创建一个包含3行和4列的GridLayout.但是,我只添加了9个组件.它最终向我展示了3x3网格中的这9个组件,而不是3x4网格(第三行只有一个组件(和两个空白)).

cam*_*ckr 29

而不是3x4网格(第三行只有一个组件(和两个空白)).

然后你应该使用以下方法创建GridLayout:

setLayout(new GridLayout(0,4)); 
Run Code Online (Sandbox Code Playgroud)

它告诉布局你不知道你有多少行,但你想要4列.因此,在移动到下一行之前,列将被填满.

不需要空组件.


Jac*_*ack 4

只需用空项目(如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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将它们布局为

0 1 2 3
4 5 6 7
9    
Run Code Online (Sandbox Code Playgroud)

  • -1,虽然该解决方案有效,但它更像是一种 hack,并且没有表现出对 API 的理解。另外,如果您确实需要一个空单元格,那么最好使用 Box 组件之一(胶水、支柱),它们没有任何特殊的绘制逻辑,只是为了填充空间而设计的。 (2认同)