2015-11-22 36 views
0

我有一个具有GridBagLayout作为布局的JDialog。它包含一个JPanel孩子,他也有一个GridBagLayout作为布局。父级包含其他字段,每个字段分为两列(标签 - 编辑器)。孩子包含几个字段,每个字段分成三列(标签 - 编辑器 - 标签)。我希望孩子和父母的第一列对齐在一起。这是它的外观现在:嵌套的GridBagLayout - 如何将孩子的列与父列对齐

enter image description here

父相关代码:

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的期望的行为?

回答

3

孩子包含几个字段,每个字段分成三列(标签 - 编辑器 - 标签)。

您还需要使这2列面板:

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