Swing组件不能单独存在,必须放置于容器当中,组件在容器中的位置和尺寸是由布局管理器来决定的。

Swing提供了8种布局管理器,分别是BorderLayout(边界布局管理器),BoxLayout(箱式布局管理器),CardLayout(卡片布局管理器),FlowLayout(流式布局管理器),GridBagLayout(网格包布局管理器),GridLayout(网格布局管理器),GroupLayout(分组布局管理器)和SpringLayout(弹性布局管理器)。

1.BorderLayout

它将容器划分为5个区域,页头(PAGE_START),页尾(PAGE_END),行首(LINE_START),行尾(LINE_END),中部(CENTER)

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Example03 {

private static void CreateAndShowGUI() {
	//创建一个名为BorderLayout的顶级容器窗口
	JFrame f=new JFrame("BoderLayout");
	///设置窗体中布局管理器为Borderlayout
	f.setLayout(new BorderLayout());
	f.setSize(300,300);//设置窗体大小
	f.setLocation(300,200);//设置窗体显示位置
	//创建5个按钮组件
	JButton bu1=new JButton("PAGE_START");
	JButton bu2=new JButton("PAGE_END");
	JButton bu3=new JButton("LINE_START");
	JButton bu4=new JButton("LINE_END");
	JButton bu5=new JButton("CENTER");
	//将创建的按钮添加至容器中,并设置按钮所在的区域
	f.add(bu1,BorderLayout.PAGE_START);
	f.add(bu2,BorderLayout.PAGE_END);
	f.add(bu3,BorderLayout.LINE_START);
	f.add(bu4,BorderLayout.LINE_END);
	f.add(bu5,BorderLayout.CENTER);
	f.setVisible(true);//设置窗体可见
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(Example03::CreateAndShowGUI);

	}

}

结果如:

java 布局 管理系统 java的布局管理器有哪些_java

JFrame默认使用BorderLayout布局管理器。使用BorderLayout布局管理器时,如果不指定添加到哪一个区域时,默认CENTER区域,并且每一个区域只能放置一个组件,向一个区域添加多个组件时,后放入的组件会覆盖先放入的组件。

2.FlowLayout

流式布局管理器,容器会将组件按照添加顺序从左向右放置,当到达容器边界时,会自动将组件放到下一行的开始位置。这些组件可以按左对齐,按右对齐,居中对齐(默认方式)排列。

FlowLayout类的三个构造方法。

方法声明                                       功能描述

FlowLayout()           组件默认居中对齐,水平、垂直间距默认为5个单位

FlowLayout(int align)   指定组件相对于容器的对齐方式,水平,垂直间距默认为5个单位

FlowLayout(int align,int hgap,int vgap)  指定组件的对齐方式和水平,垂直间距。 

align的常量:FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER.

hgap(水平),cgap(垂直)组件之间的距离。

import java.awt.Button;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Example04 {
	private static void createAndShowGUI() {
		//创建一个名为FlowLayout的窗体
		JFrame F=new JFrame("FlowLayout");
		//设置窗体中布局管理器为:FlowLayout,
		//所有组件左对齐,水平间距为20,垂直间距为30
		F.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
		F.setSize(400,200);//设置窗体大小
		F.setLocation(300,200);//设置窗体显示位置
		//向容器加入组件
		F.add(new Button("第1个按钮"));
		F.add(new Button("第2个按钮"));
		F.add(new Button("第3个按钮"));
		F.add(new Button("第4个按钮"));
		F.add(new Button("第5个按钮"));
		F.setVisible(true);//设置窗体可见
		F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	} 
public static void main(String[] args) {
	SwingUtilities.invokeLater(Example04::createAndShowGUI);
}
}

结果:

java 布局 管理系统 java的布局管理器有哪些_hg_02

 3.GridLayout

网格布局管理器使用纵横线将容器分成n行m列大小相等的网格,每个网格中可以添加一个组件。首先放在第一行第一列依次从左向右放置其他组件,行满后,继续从下一行中从左向右放置。组件自动占满整个网格。GridLayout类又三个构造方法。

方法声明                  功能描述

GridLayout()         默认只有一行,每个组件占一列

GridLayout(int rows,int cols)    指定容器的行数和列数

GridLayout(int rows,int cols,int hgap,int vgap)  指定容器的行数和列数以及组件之间的水平、垂直间距

import java.awt.Button;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Example05 {
	private static void createAndShowGUI() {
		//创建一个名为GridLayout的窗体
		JFrame f=new JFrame("GridLayout");
		f.setLayout(new GridLayout(3,3));//设置窗体为3*3的网格
		f.setSize(300,300);//设置窗体大小
		f.setLocation(400, 300);//设置窗体显示位置
		//循环添加8个按钮到GridLayout容器中
		for(int i=1;i<9;i++) {
			Button btn=new Button("btu"+i);
			f.add(btn);
		}
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
public static void main(String[] args) {
	SwingUtilities.invokeLater(Example05::createAndShowGUI);
}
}

结果:

java 布局 管理系统 java的布局管理器有哪些_java 布局 管理系统_03