我如何布置我的按钮,以便它们从左上角到右下角(填充第一行然后第二行)

How do i lay out my buttons so they will go from top left to bottom right (filling first row then second)

所以我有一个 JPanel 填充了 JButtons 并且只有 Jbuttons:

当只有按钮 1 和按钮 20 可见时,我该如何做到这一点,所以按钮布局变为 如果我要让 Jbuuton 15 Visible 出现,它将介于 JButton 1 和 20 之间。

我试图让它锚定在顶部和左侧并将间距设置为 0 但它这样做了:

我真的不能给出代码,因为它是在 NetBeans 生成的代码中生成的,并且程序设置按钮可见取决于很多其他东西,所以让它独立会花费很多时间。

编辑: 使用方法通过方法将 JButton 添加到网格 就我而言

public static void RedoGridLayout(){
    GridLayout UpgradesLayout = new GridLayout(0,5);
    CookieclickerGUI.Panel_Upgrade.setLayout(UpgradesLayout);

    for(int i = 0; i<upgrades.size(); i++){
        Upgrades upgrade = upgrades.get(i);
        JButton Button = upgrade.getJButton();
        if(Button.isVisible()){
            CookieclickerGUI.Panel_Upgrade.add(Button);
            System.out.println("Added...\n" + Button + "\nButton to the grid");
        }
    }
}

这是如何在 底部 而不是顶部的网格中添加按钮的,所以如果你想看到你需要向下滚动的按钮。

编辑 2:* 按钮被放置在底部,因为其他按钮仍在面板中(当然它们是),因此在将按钮放置在左上角但扩展以适合整个面板之前执行 .removeAll(); 。在使按钮形状正确后,我通过添加所有 !.isvisible() 的按钮来修复。

我的问题的答案是 GridLayout。 它将我的按钮放在我想要的网格中。

将网格放置在底部的解决方案是因为我将网格添加到布局中时犯了一个简单的错误,当时它包含很多设置为 .setvisible(false); 的按钮,所以程序最终将其放置纽扣。这是通过简单的 .removeAll(); 删除存储在其中的所有 JComponents 来解决的。

注意 我将所有 JComponents 存储在一个 JButton 数组中,因为我只有按钮,后来执行了一个 for 循环 运行 通过数组检查它是否可见或不,如果它被添加到网格中。