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

问题描述

所以我有一个 JPanel 填充白色 JButtons 并且只有 Jbuttons:像这样

当只有按钮 1 和按钮 20 可见时,我该如何做到这一点,因此按钮布局变为可见像这样 ,如果我要让 Jbuuton 15 可见,它将出现在 JButton 1 和 20 之间。

我试图让它锚定在顶部和左侧并将间距设置为 0 但它这样做:发生在我身上的事

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

编辑:在我的情况下,使用一种方法通过一种方法将 JButtons 添加到网格中

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()我通过添加使按钮正确形状后的所有按钮来修复。

标签: javauser-interfacenetbeansjbutton

解决方案


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

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

请注意,我将所有 JComponents 存储在一个 JButton 数组中,因为我只有按钮,然后执行了一个通过数组运行的 for 循环,检查它是否可见以及它是否已添加到网格中。


推荐阅读