【问题标题】:Why does a grouplayout resizes a parent gridbaglayout?为什么 grouplayout 会调整父 gridbaglayout 的大小?
【发布时间】:2013-11-21 08:45:26
【问题描述】:

我在父面板中使用 gridbaglayout 来设置与窗口大小成比例的权重大小。 然后我在其中添加面板并将其布局设置为 grouplayout。它会覆盖我在其父级中设置的权重并占用比预期更多的空间。如果我更改 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);

之后:

【问题讨论】:

    标签: java swing layout-manager


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多