为什么当我运行此代码时,窗口有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);
答案 0 :(得分:1)
您只向网格添加了25个项目,因此布局优先保留您输入的行数,并添加足够的列来填充添加的项目。如果您想要10乘10,那么您需要添加更多项(空JLabel将起作用)作为占位符组件。
如果您想要10列和可变行数,请使用以下设置:
container.setLayout(new GridLayout(0, 10));
修改强>
根据{{3}}:
当行数和列数都通过构造函数或setRows和setColumns方法设置为非零值时,将忽略指定的列数。而是根据指定的行数和布局中的组件总数确定列数。