2012-07-01 51 views
3

我想做一個兩列,3行佈局。沿着線的東西:Java組的佈局,垂直佈局問題

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

但是,即使我敢肯定的組管理得當,它最終還是在同一行上,像這樣: Single Row

我有垂直組剛剛分離細

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)) 
      ); 

任何想法?

回答

4

您需要設置容器的佈局 - 請參閱下面第三行中的標記[1]。 對我來說,它看起來像你錯過了,容器使用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 good catch;另見[示例](http://stackoverflow.com/a/11284874/230513),它增加了第三行。 – trashgod

2

僅供參考,還有的工作示例兩列,三列布局here,如下圖所示,可以幫助指導你。

image