GridBagLayout是否需要空单元格的占位符面板?

bax*_*dab 5 java swing gridbaglayout

我做了一个简单的操作GridBagLayout,在单元格(0,0),(1,0)和(0,1)中添加了按钮.

JPanel panelMain = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;
    panelMain.add(new JButton("0,0"),c);

    c.gridx = 1;
    c.gridy = 0;
    panelMain.add(new JButton("1,0"),c);

    c.gridx = 0;
    c.gridy = 1;
    panelMain.add(new JButton("0,1"),c);
Run Code Online (Sandbox Code Playgroud)

我很高兴看到由此产生的UI:

期望的结果

我想JButton在一个未连接到现有单元格的单元格中添加一个.我希望它被一个空的空间分开.当我尝试这个时,新的东西JButton被压在其他的旁边.这是补充:

JPanel panelMain = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;
    panelMain.add(new JButton("0,0"),c);

    c.gridx = 1;
    c.gridy = 0;
    panelMain.add(new JButton("1,0"),c);

    c.gridx = 0;
    c.gridy = 1;
    panelMain.add(new JButton("0,1"),c);

    c.gridx = 3;
    c.gridy = 0;
    panelMain.add(new JButton("3,0"),c);
Run Code Online (Sandbox Code Playgroud)

输出:

不受欢迎的结果

JButton("3,0")是在细胞(2,0)显示.我是否需要JPanel在单元格中使用空格作为占位符(2,0)?更重要的是,为什么会发生这种情况?

Jam*_*hin 3

布局不知道应该保留的宽度是多少,2,0除非gridx = 2. 当您完成 UI 时,如果放置了任何组件,它看起来应该很好。例如:

在此输入图像描述

在其他情况下,您可以添加JPanel背景颜色与容器背景颜色匹配的空。