2012-07-01 3 views
3

J'essaie de faire une disposition de deux colonnes, 3 rangées. Quelque chose le long des lignes de:Java Group mise en page, numéros de mise en page verticale

---------------------- 
| Username |Textbox| | 
| Email |Textbox| | 
---------------------- 

Pourtant, même quand je suis tout à fait sûr que les groupes gérés correctement, il se termine toujours sur une seule ligne comme ceci: Single Row

Je les groupes verticaux séparés juste bien

gl_contentPanel.setHorizontalGroup(
     gl_contentPanel.createSequentialGroup() 
        .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.LEADING) 
          .addComponent(usernameLabel) 
          .addComponent(emailLabel)) 
        .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.LEADING) 
          .addComponent(usernames) 
          .addComponent(email)) 
      ); 
     gl_contentPanel.setVerticalGroup(
       gl_contentPanel.createSequentialGroup() 
        .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.BASELINE) 
         .addComponent(usernameLabel) 
         .addComponent(usernames)) 
        .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.BASELINE) 
         .addComponent(emailLabel) 
         .addComponent(email)) 
      ); 

Des idées?

Répondre

4

Vous devez définir la disposition du conteneur - voir la marque [1] dans la troisième ligne ci-dessous. Pour moi, il semble que vous avez manqué cela et le conteneur utilise FlowLayout.

JFrame frame = new JFrame("GroupLayout Test"); 
GroupLayout gl_contentPanel = new GroupLayout(frame.getContentPane()); 
frame.setLayout(gl_contentPanel); // [1] 

JLabel usernameLabel = new JLabel("User name"); 
JLabel emailLabel = new JLabel("Email"); 
JTextField usernames = new JTextField("usernames"); 
JTextField email = new JTextField("email"); 

// your snippet 
gl_contentPanel.setHorizontalGroup(
     gl_contentPanel.createSequentialGroup() 
        .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.LEADING) 
           .addComponent(usernameLabel) 
           .addComponent(emailLabel)) 
         .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.LEADING) 
           .addComponent(usernames) 
           .addComponent(email)) 
       ); 
    gl_contentPanel.setVerticalGroup(
      gl_contentPanel.createSequentialGroup() 
       .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.BASELINE) 
        .addComponent(usernameLabel) 
        .addComponent(usernames)) 
       .addGroup(gl_contentPanel.createParallelGroup(GroupLayout.Alignment.BASELINE) 
        .addComponent(emailLabel) 
        .addComponent(email)) 
     ); 
// end of your snippet 

frame.pack(); 
frame.setVisible(true); 
+1

+1 bonne prise; voir aussi cet exemple [http://stackoverflow.com/a/11284874/230513], qui ajoute une troisième ligne. – trashgod

2

Pour référence, il y a un exemple de travail d'une colonne à deux, trois rangs here mise en page, illustrée ci-dessous, qui peut aider à vous guider.

image