【问题标题】:Nested GridBagLayout - how to align the child's columns with the parent's columns嵌套的 GridBagLayout - 如何将子列与父列对齐
【发布时间】:2015-11-22 19:28:07
【问题描述】:

我有一个具有 GridBagLayout 作为布局的 JDialog。它包含一个 JPanel 子级,该子级也有一个 GridBagLayout 作为布局。父级包含其他字段,每个字段位于两列中(标签 - 编辑器)。子项包含几个字段,每个字段位于三列中(标签 - 编辑器 - 标签)。我希望孩子和父母的第一列对齐在一起。这就是它现在的样子:

父相关代码:

GridBagConstraints contrainte = new GridBagConstraints();
Insets insetsLabel = new Insets(0, 0, 0, 0);
Insets insetsChampsEdit = new Insets(0, 10, 0, 0);

contrainte.ipady = 10;
contrainte.gridx = 0;
contrainte.gridy = 1;
contrainte.fill = GridBagConstraints.HORIZONTAL;
contrainte.gridwidth = 1;
this.add(this.m_lblPremierDepart, contrainte);

contrainte.gridx = 1;
contrainte.insets = insetsChampsEdit;
this.add(this.m_timePicker, contrainte);

contrainte.gridx = 0;
contrainte.gridy = 2;
contrainte.insets = insetsLabel; // reset insets
contrainte.gridwidth = 3;
this.add(this.m_panneauDistribution, contrainte);

contrainte.gridy = 3;
contrainte.gridwidth = 1;
this.add(this.m_lblNbMaxVehicules, contrainte);

contrainte.gridx = 1;
contrainte.insets = insetsChampsEdit;
this.add(this.m_spinNbMaxVehicules, contrainte);

儿童相关代码:

GridBagConstraints contrainte = new GridBagConstraints();
Insets insetsLabel = new Insets(0, 0, 0, 0);
Insets insetsChampsEdit = new Insets(0, 10, 0, 0);

contrainte.ipady = 10;
contrainte.gridx = 0;
contrainte.gridy = 0;
contrainte.fill = GridBagConstraints.HORIZONTAL;
this.add(this.m_lblPlusPetit, contrainte);

contrainte.gridx = 1;
contrainte.insets = insetsChampsEdit;
this.add(this.m_spinPlusPetit, contrainte);

contrainte.gridx = 2;
this.add(new JLabel("minute(s)"), contrainte);

contrainte.gridx = 0;
contrainte.gridy = 1;
contrainte.insets = insetsLabel; // reset insets
this.add(this.m_lblMoyen, contrainte);

contrainte.gridx = 1;
contrainte.insets = insetsChampsEdit;
this.add(this.m_spinMoyen, contrainte);

contrainte.gridx = 2;
this.add(new JLabel("minute(s)"), contrainte);

contrainte.gridx = 0;
contrainte.gridy = 2;
contrainte.insets = insetsLabel; // reset insets
this.add(this.m_lblPlusGrand, contrainte);

contrainte.gridx = 1;
contrainte.insets = insetsChampsEdit;
this.add(this.m_spinPlusGrand, contrainte);

contrainte.gridx = 2;
this.add(new JLabel("minute(s)"), contrainte);

有没有办法通过 GridBagLayout 获得所需的行为?

【问题讨论】:

    标签: java swing layout-manager gridbaglayout


    【解决方案1】:

    子项包含多个字段,每个字段分为三列(标签 - 编辑器 - 标签)。

    您还需要将其设为 2 列面板:

    1. 标签作为第一列
    2. 面板(包含编辑器和标签)作为第二列)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多