我在父面板中使用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之前:
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);
之后:
答案 0 :(得分:0)
显然Grouplayout不尊重其父级大小限制。当我用GroupLayout.Preferred_Size替换以下行中的固定大小时,问题就解决了。
.addGap(0, 253, Short.MAX_VALUE)
.addGap(0, 358, Short.MAX_VALUE)