Java—边界、流式、网格 三大布局管理器的使用

说明: Swing组件不能单独存在,必须放置于容器当中,而组件在容器中的位置和尺寸是由布局管理器来决定的。
分类:
在这里插入图片描述
今天主要讲解的是边界布局管理器、流式布局管理器和网格布局管理器


BorderLayout:边界布局管理器


说明:
BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是页头(PAGE_START)、页尾(PAGE_END)、行首(LINE_START)、行尾(LINE_END)、中部(CENTER)。
组件可以被放置在这五个区域中的任意一个位置。
官方布局效果图:

在这里插入图片描述
使用:
向BorderLayout布局管理器的容器中添加组件时,需要使用add(Component comp,Object constraints)方法。

参数comp表示要添加的组件,constraints指定将组件添加到布局中的位置,它是一个Object类型。

传参时可以使用BorderLayout类提供的5个常量设置组件位置,它们分别是PAGE_START、PAGE_END、LINE_START、LINE_END和CENTER。

说明:
BorderLayout的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变

向BorderLayout的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加到CENTER区域。

每个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。

package First;

import java.awt.*;

import javax.swing.*;

public class _1_边界布局管理器 {
		 	public static void main(String[] args) {
		 			//创建并设置JFrame容器窗口
		 			JFrame jf = new JFrame() ;//此时的窗口是不可见的,需要使用下面的方法进行设置可见
		 			
		 			//设置位置(单位是像素)
		 			jf.setLocation(200, 300);
		 			
		 			//设置大小(单位是像素)
		 			jf.setSize(400, 600);
		 			
		 			//当窗口关闭的时候,eclipse并不会停止运行,这个时候怎么能够使窗口关闭的时候,eclipse也会停止运行。
		 			//在关闭的时候退出
		 			jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 			
		 			//设置窗口的标题
		 			jf.setTitle("我的第一个窗口");
		 			
		 			//创建命令按钮
		 			JButton btn = new JButton("ok") ;
		 			JButton btn2 = new JButton("yes") ;
		 			JButton btn3 = new JButton("center") ;
		 			JButton btn4 = new JButton("left") ;
		 			JButton btn5 = new JButton("right") ;
		 			
		 			//添加组件(组件时不能够单独存在的,必须放在容器中)
//		 			jf.add(btn);
//		 			jf.add(btn2);
		 			//上面的代码可以发现,上面的ok被代替了,变成了yes,这就与布局管理区有关系了
		 			
		 			//随着窗口的改变,按钮的大小改变,但是相对位置不会发生改变
		 			jf.add(btn, BorderLayout.PAGE_START);//后面点出来的参数可以改成  .NORTH  下同
		 			jf.add(btn2 , BorderLayout.PAGE_END);//.SOUTH
		 			jf.add(btn3 , BorderLayout.CENTER);//.CENTER
		 			jf.add(btn4 , BorderLayout.LINE_START);//.WEST
//		 			jf.add(btn5 , BorderLayout.LINE_END);//.EAST
		 			jf.add(btn5 , "East");//这是一种新方法,直接写英文单词,首字母大写,其他字母小写
					
		 			
		 			
		 			//设置可见
		 			jf.setVisible(true);//true是可见的,false是不可见的
			}
}

在这里插入图片描述

在这里插入图片描述

说明:
上面的两种传参的参数是可以的,不过也可以直接写出英文单词,不过需要首字母大写,其他字母小写(上面的举例中已经给出)。


FlowLayout:(流式布局管理器)


说明:
FlowLayout(流式布局管理器)是最简单的布局管理器。
在这种布局下,容器会将组件按照添加顺序从左向右放置,当到达容器的边界时,会自动将组件放到下一行的开始位置。
这些组件可以按左对齐、居中对齐(默认方式)或右对齐的方式排列。
构造方法:
在这里插入图片描述
说明:
参数align决定组件在每行中相对于容器边界的对齐方式,分别为左对齐、右对齐、居中对齐。
对齐方式可以使用该类中提供的常量FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER表示。
参数hgap和参数vgap分别设定组件之间的水平和垂直间距,可以填入一个任意数值。

package First;

import javax.swing.*;
import java.awt.*;

public class _2_流式与网格布局管理器 {
		 	public static void main(String[] args) {
		 			JFrame jf = new JFrame() ;//此时的窗口是不可见的,需要使用下面的方法进行设置可见
		 			
		 			//设置位置(单位是像素)
		 			jf.setLocation(200, 300);
		 			
		 			//设置大小(单位是像素)
		 			jf.setSize(400, 600);
		 			
		 			//当窗口关闭的时候,eclipse并不会停止运行,这个时候怎么能够使窗口关闭的时候,eclipse也会停止运行。
		 			//在关闭的时候退出
		 			jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 			
		 			//设置窗口的标题
		 			jf.setTitle("我的第一个窗口");

		 			
		 			//创建一个命令按钮
		 			JButton btn = new JButton("ok") ;
		 			JButton btn2 = new JButton("yes") ;
		 			JButton btn3 = new JButton("center") ;
		 			JButton btn4 = new JButton("left") ;
		 			JButton btn5 = new JButton("right") ;
	
//		 			设置流式布局管理器(当窗口的大小发生改变的时候,按钮可以改变相对位置,但不会改变大小)
		 			jf.setLayout(new FlowLayout());
		 			jf.add(btn);
		 			jf.add(btn2 );
		 			jf.add(btn3 );
		 			jf.add(btn4);
		 			jf.add(btn5);
		 			
		 			//设置可见
		 			jf.setVisible(true);//true是可见的,false是不可见的
			}
}

在这里插入图片描述
如果缩小窗口是什么样的效果?
在这里插入图片描述
将上面的代码设置对齐方式与水平垂直间距:

					//左对齐,水平间距20px,垂直间距30px
		 			jf.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
		 			jf.add(btn);
		 			jf.add(btn2);
		 			jf.add(btn3);
		 			jf.add(btn4);
		 			jf.add(btn5);

当再次缩小窗口的时候得到的又是什么效果?
在这里插入图片描述


GridLayout(网格布局管理器):


说明:
GridLayout(网格布局管理器)使用纵横线将容器分成n行m列大小相等的网格,每个网格中可以添加一个组件。
添加到容器中的组件会从左向右、从上向下依次填充到网格中。
与FlowLayout不同的是,放置在GridLayout布局管理器中的组件将自动占据网格的整个区域

构造方法:
在这里插入图片描述
说明:参数rows代表行数,cols代表列数,hgap和vgap规定窗格之间水平和垂直方向的间距。

package First;

import javax.swing.*;
import java.awt.*;

public class _2_流式与网格布局管理器 {
		 	public static void main(String[] args) {
		 			JFrame jf = new JFrame() ;//此时的窗口是不可见的,需要使用下面的方法进行设置可见
		 			
		 			//设置位置(单位是像素)
		 			jf.setLocation(200, 300);
		 			
		 			//设置大小(单位是像素)
		 			jf.setSize(400, 600);
		 			
		 			//当窗口关闭的时候,eclipse并不会停止运行,这个时候怎么能够使窗口关闭的时候,eclipse也会停止运行。
		 			//在关闭的时候退出
		 			jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 			
		 			//设置窗口的标题
		 			jf.setTitle("我的窗口");

		 			
		 			//创建一个命令按钮
		 			JButton btn = new JButton("ok") ;
		 			JButton btn2 = new JButton("yes") ;
		 			JButton btn3 = new JButton("center") ;
		 			JButton btn4 = new JButton("left") ;
		 			JButton btn5 = new JButton("right") ;
		 			
					//设置网格布局(当窗口的大小发生改变的时候,按钮可以改变大小,不会改变相对位置)
					jf.setLayout(new GridLayout(2,3));//设置为两行三列,根据整个窗口的大写,平均分配每一个格子
		 			jf.add(btn);
		 			jf.add(btn2);
		 			jf.add(btn3);
		 			jf.add(btn4);
		 			jf.add(btn5);
		 			
					
		 			
		 			//设置可见
		 			jf.setVisible(true);//true是可见的,false是不可见的
			}
}

在这里插入图片描述
将上面的窗口缩小后又什么样的效果呢?
在这里插入图片描述

特点:
组件的相对位置不随区域的缩放而改变,但组件的大小会随之改变,组件始终占据网格的整个区域。
缺点:
总是忽略组件的最佳大小,所有组件的宽高都相同。

善意的说明:

边界布局管理器:随着窗口的改变,按钮的大小改变,但是相对位置不会发生改变
流式布局管理器:当窗口的大小发生改变的时候,按钮可以改变相对位置,但不会改变大小
网格布局管理器:当窗口的大小发生改变的时候,按钮可以改变大小,不会改变相对位置

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值