GroupLayout——简单的组件定位

GroupLayout - simple component positioning

我一直在使用 GridBagLayout 但最近转向 GroupLayout。下面是我所拥有的和我需要的屏幕截图。然后是代码。

我需要更改什么?

我有什么

我需要的

我想我应该使用 TRAILINGLEADING 常量,但 GUI 没有响应。这可能是大多数 SO 建议人们避免 GroupLayout 的原因吗?之前一直在用GridBagLayout,比较复杂,GroupLayout代码好像简单多了。这就是我使用它的原因。下面给出了我的代码,我需要什么才能达到预期的效果?

public class GroupLayoutOne extends JFrame{

   JLabel lbText = new JLabel("Text one");
   JTextField txText = new JTextField();
   JLabel lbText2 = new JLabel("Text two");
   JTextField txText2 = new JTextField();
   JPanel pnCompo = new JPanel();

    public static void main(String[] args) {
    
        GroupLayoutOne glx = new GroupLayoutOne();
        glx.init();
        glx.setVisible(true);
        glx.setSize(new Dimension(400,200));
        glx.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

    void init(){
        GroupLayout gl = new GroupLayout(getContentPane());
        this.getContentPane().setLayout(gl);
    
        pnCompo.setPreferredSize(new Dimension(300,300));
        pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
        gl.setHorizontalGroup(gl.createSequentialGroup()
                .addGroup(gl.createParallelGroup()
                        .addComponent(lbText)
                        .addComponent(lbText2)
                        .addComponent(pnCompo)
                 )
                 .addGroup(gl.createParallelGroup()
                        .addComponent(txText)
                        .addComponent(txText2)
    
                )
        );
        gl.setVerticalGroup(gl.createSequentialGroup()
                 .addGroup(gl.createParallelGroup()
                        .addComponent(lbText)
                        .addComponent(txText)
                   
                 )
                 .addGroup(gl.createParallelGroup()
                        .addComponent(lbText2)
                        .addComponent(txText2)
                   
                )
                .addComponent(pnCompo)
        );
        pack();
    }
 }

用以下代码替换您的初始化方法: 顺便说一句:使用 NetBeans 或 Eclipse 绘制摆动 UI。比自己写代码容易多了。

    GroupLayout gl = new GroupLayout(getContentPane());
    this.getContentPane().setLayout(gl);

    pnCompo.setPreferredSize(new Dimension(300,300));
    pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
    gl.setHorizontalGroup(gl.createSequentialGroup()
            .addGroup(gl.createParallelGroup()
                    .addGroup(gl.createSequentialGroup().addComponent(lbText)
                    .addComponent(txText))

             .addGroup(gl.createParallelGroup()
                     .addGroup(gl.createSequentialGroup().addComponent(lbText2)
                    .addComponent(txText2))

             .addComponent(pnCompo))
             )
    );
    gl.setVerticalGroup(gl.createSequentialGroup()
             .addGroup(gl.createParallelGroup()
                    .addComponent(lbText)
                    .addComponent(txText))
             .addGroup(gl.createParallelGroup().addComponent(lbText2)
                    .addComponent(txText2)
            )
            .addComponent(pnCompo)
    );
    pack();