Java GUI编程(12)---分组布局GroupLayout

GroupLayout

把多个组件按区域划分到不同的Group,再根据各个Group相对于水平轴(Horizontal)和垂直轴(Vertical)的排列方式来管理。

 

GroupLayout布局特征对 X(水平方向)和 Y(竖直方向)独立的,因此在水平竖直方向上分别指定一个组,来分别确定组件在水平方向竖直方向 上的位置。

 

//确定组件在 X轴 方向上的位置, 指定布局的水平组的方法

GroupLayout.setHorizontalGroup(GroupLayout.Group group);

* 水平组(仅确定 X 轴方向的坐标/排列方式)

* 水平串行: 水平排列(左右排列)

* 水平并行: 垂直排列(上下排列)

-------------------------------------------------------

//确定组件在 Y轴 方向上的位置, 指定布局的垂直组的方法

GroupLayout.setVerticalGroup(GroupLayout.Group group);

* 垂直组(仅确定 Y 轴方向的坐标/排列方式)

* 垂直串行: 垂直排列(上下排列)

* 垂直并行: 水平排列(左右排列)

 

布局设计

Java GUI编程(12)---分组布局GroupLayout_第1张图片

演示代码


package com.msh.util;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class DemoGroupLayout {

    public static void main(String[] args) {
        JFrame jf = new JFrame("演示分组布局");
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        
        JPanel jp = new JPanel();
        GroupLayout layout = new GroupLayout(jp); //分组布局的面板
        jp.setLayout(layout);
        
        layout.setAutoCreateGaps(true);//组件之间的间隙自动适应
        layout.setAutoCreateContainerGaps(true); //容器与触到容器边框的组件之间的间隙自动适应
       
        JLabel lbl01 = new JLabel("账号");
        JLabel lbl02 = new JLabel("密码");
        JTextField textField01 = new JTextField("请输入~");
        JTextField textField02 = new JTextField("请输入~");
        JButton btn01 = new JButton("登录");
        JButton btn02 = new JButton("注册");
        
        /*
          *水平组(仅确定 X 轴方向的坐标/排列方式)
        */
        
        //水平并行: 垂直排列(上下排列)lbl01 和 lbl02
         GroupLayout.ParallelGroup hParalGp01 = layout.createParallelGroup();
         hParalGp01.addComponent(lbl01);
         hParalGp01.addComponent(lbl02);
         
         //水平并行(上下)textField01 和 textField02
         GroupLayout.ParallelGroup hParalGp02 = layout.createParallelGroup();
         hParalGp02.addComponent(textField01).addComponent(textField02);
         
         //水平串行(左右)hParalGp01 和 hParalGp02
        GroupLayout.SequentialGroup hSeqGp01 = layout.createSequentialGroup();
        hSeqGp01.addGroup(hParalGp01).addGroup(hParalGp02);
        
        //水平串行(左右)btn01 和 btn02
        GroupLayout.SequentialGroup hSeqGp02 = layout.createSequentialGroup();
        hSeqGp02.addComponent(btn01).addGap(20).addComponent(btn02); //添加 间隙
        
        //水平并行(上下)hSeqGp01 和 hSeqGp02
        GroupLayout.ParallelGroup hParalGroup = layout.createParallelGroup();
        hParalGroup.addGroup(hSeqGp01).addGroup(hSeqGp02);
        
        layout.setHorizontalGroup(hParalGroup); // 指定布局的 水平组(水平坐标)
        /*
           *垂直组(仅确定 Y 轴方向的坐标/排列方式)
        */
        
        // 垂直并行(左右)lbl01 和 textField01
        GroupLayout.ParallelGroup vParalGroup01 = layout.createParallelGroup().addComponent(lbl01).addComponent(textField01);
        
        // 垂直并行(左右)lbl02 和 textField02
        GroupLayout.ParallelGroup vParalGroup02 = layout.createParallelGroup().addComponent(lbl02).addComponent(textField02);

        // 垂直并行(左右)btn01 和 btn02
        GroupLayout.ParallelGroup vParalGroup03 = layout.createParallelGroup().addComponent(btn01).addComponent(btn02);
        
        // 垂直串行(上下)vParalGroup01, vParalGroup02 和 vParalGroup03
        GroupLayout.SequentialGroup vSeqGroup = layout.createSequentialGroup().addGroup(vParalGroup01).addGroup(vParalGroup02).addGroup(vParalGroup03);
        
        layout.setVerticalGroup(vSeqGroup);    // 指定布局的 垂直组(垂直坐标)
        
        jf.setContentPane(jp);
        //jf.pack();
        jf.setSize(300, 150);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);  // 显示窗口
        
    }
    
}

运行效果

Java GUI编程(12)---分组布局GroupLayout_第2张图片

你可能感兴趣的:(Java书院,java)