为什么grouplayout会调整父级gridbaglayout的大小?

时间:2013-11-21 08:45:26

标签: java swing layout-manager

我在父面板中使用gridbaglayout来设置与窗口大小成比例的重量大小。 然后我在其中添加面板并将其布局设置为grouplayout.it覆盖我在其父级中设置的权重并占用比预期更多的空间。如果我更改了grouplayout中的值,它会得到修复,但我想知道为什么它会覆盖父面板分配的尺寸?

这是我的代码和图片:

    GridBagLayout gbl_panelMain = new GridBagLayout();
    gbl_panelMain.columnWeights = new double[]{0.05,0.9,0.05};
    gbl_panelMain.rowWeights = new double[]{0.24,0.72,0.04};
    panelMain.setLayout(gbl_panelMain);
    panelContent = new JPanel();
    panelContent.setOpaque(false);
    GridBagConstraints gbc_panel_2 = new GridBagConstraints();
    gbc_panel_2.insets = new Insets(0, 0, 0, 0);
    gbc_panel_2.fill = GridBagConstraints.BOTH;
    gbc_panel_2.gridx = 1;
    gbc_panel_2.gridy = 1;
    panelMain.add(panelContent, gbc_panel_2);

在我添加GroupLayout之前:

enter image description here

   GroupLayout gl_panelContent = new GroupLayout(panelContent);
    gl_panelContent.setHorizontalGroup(
        gl_panelContent.createParallelGroup(Alignment.LEADING)
            .addGap(0, 253, Short.MAX_VALUE)
    );
    gl_panelContent.setVerticalGroup(
        gl_panelContent.createParallelGroup(Alignment.LEADING)
            .addGap(0, 358, Short.MAX_VALUE)
    );
    panelContent.setLayout(gl_panelContent);

之后:

enter image description here

1 个答案:

答案 0 :(得分:0)

显然Grouplayout不尊重其父级大小限制。当我用GroupLayout.Preferred_Size替换以下行中的固定大小时,问题就解决了。

.addGap(0, 253, Short.MAX_VALUE)
.addGap(0, 358, Short.MAX_VALUE)