java中的网格布局行为

时间:2014-05-11 17:26:26

标签: java swing grid-layout

为什么当我运行此代码时,窗口有3列10行?我认为它应该有10列10行。

代码:

JFrame frame = new JFrame();
Container container = frame.getContentPane();
container.setLayout(new GridLayout(10,10));
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i >= j) {
            container.add(new JButton("X"));
        } else {
            container.add(new JLabel("*"));
        }
    }
}
frame.setSize(500, 500);
frame.setVisible(true);

1 个答案:

答案 0 :(得分:1)

您只向网格添加了25个项目,因此布局优先保留您输入的行数,并添加足够的列来填充添加的项目。如果您想要10乘10,那么您需要添加更多项(空JLabel将起作用)作为占位符组件。

如果您想要10列和可变行数,请使用以下设置:

container.setLayout(new GridLayout(0, 10));

修改
根据{{​​3}}:

  

当行数和列数都通过构造函数或setRows和setColumns方法设置为非零值时,将忽略指定的列数。而是根据指定的行数和布局中的组件总数确定列数。