【问题标题】:Grid Layout behaviour in javajava中的网格布局行为
【发布时间】:2014-05-12 01:46:55
【问题描述】:

为什么当我运行此代码时,窗口有 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);

【问题讨论】:

    标签: java swing grid-layout


    【解决方案1】:

    您只向网格添加了 25 个项目,因此布局会优先保持您输入的行数,并添加足够的列来填充添加的项目。如果您想要 10 x 10,则需要添加更多项目(空的 JLabels 可以)作为占位符组件。

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

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

    编辑
    根据GridLayout API

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

    【讨论】:

    • 所以默认情况下它会添加 3 列,除非我放置更多项目以便它可以添加 4??
    • @user3626083:我认为行数是有利的。如果您想支持列,请参阅编辑以回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 2011-01-05
    • 2014-01-18
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多