java语法学习(11)GUI——布局管理器


布局管理器
Swing 组件不能单独存在,必须放置于容器中,而组件在容器中的位置和尺寸是由布局管理器来决定的
Swing工具在AWT的基础上提供了8种布局管理器

名称解释
BorderLayout边缘布局管理器
BoxLayout箱式布局管理器
CardLayout卡片布局管理器
FlowLayout流式布局管理器
GridBagLayout网格包布局管理器
GridLayout网格布局管理器
GroupLayout分组布局管理器
SpringLayout弹性布局管理器

BorderLayout

是一种较为复杂的布局方式,它将容器划分为5个区域,分别是页头,页尾,行首,行尾,中部,向BorderLayout布局管理器的容器中添加组件时,需要使用add(Component comp,Object constraints)方法,其中参数 comp 表示要添加的组件,constraints 指定将组件添加到布局中的位置,它是一个Object类型,在传参时可以使用BorderLayout类提供的五个常量设置组件位置,它们分别是:
PAGE_START
PAGE_END
LINE_START
LINE_END
CENTER

e.g:
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			 //创建并设置JFrame 容器窗口
			JFrame f = new JFrame("JFrameTest");
			f.setSize(500,500);
			f.setLocation(600, 300); // 设置窗体在界面出现的位置
			JButton but1 = new JButton("pag_start");
			JButton but2 = new JButton("pag_end");
			JButton but3 = new JButton("line_start");
			JButton but4 = new JButton("line_end");
			JButton but5 = new JButton("center");
			f.add(but1,BorderLayout.PAGE_START);
			f.add(but2,BorderLayout.PAGE_END);
			f.add(but3,BorderLayout.LINE_START);
			f.add(but4,BorderLayout.LINE_END);
			f.add(but5,BorderLayout.CENTER);
			f.setVisible(true);
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
}
上述表示方位的词也可用
NORTH
SOUTH
EAST
WEST
CENTER
替换

FlowLayout 流式布局

是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左到右放置,当到达容器的边界时,会自动将组件放到下一行的开始位置这些组件可以按左对齐,居中对齐(默认方式)或右对齐的方式排列。FlowLayout类有三个构造方法

名称解释
FlowLayout()默认居中对齐,水平,垂直间距默认为5个单位
FlowLayout(int align)指定组件相对于容器的对齐方式,水平,垂直间距默认为5个单位
FlowLayout(int align, int hgap, int vgap)指定组件的对齐方式和水平,垂直间距

参数align 决定组件在每行中相对于容器边界的对齐方式,分别为左对齐,右对齐,居中对齐,可以使用该类中提供的常量
FlowLayout.LEFT
FlowLayout.RIGHT
FlowLayout.CENTER
参数 hgap 和 参数 vgap 分别设定组件之间的水平和垂直间距,可以填入一个任意数值

e.g:
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			 //创建并设置JFrame 容器窗口
			JFrame f = new JFrame("FlowLayout");
			//所有组件左对齐,水平间距为20,垂直间距为30
			f.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
			f.setSize(500,500);
			f.setLocation(600, 300); // 设置窗体在界面出现的位置
			JButton but1 = new JButton("1");
			JButton but2 = new JButton("2");
			JButton but3 = new JButton("3");
			JButton but4 = new JButton("4");
			JButton but5 = new JButton("5");
			f.add(but1);
			f.add(but2);
			f.add(but3);
			f.add(but4);
			f.add(but5);
			f.setVisible(true);
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
}

GridLayout

使用纵横线将容器分成n行m列大小相等的网格,每个网格中可以添加一个组件,添加到容器中的组件首先放置在第1行第一列(左上角)的网格中然后在第一行的网格中从左到右依次放置其他组件,行满后,继续在下一行中从左到右来放置组件
三个构造方法:

名称解释
GridLayout()默认只有一行,每个组件占一列
GridLayout(int rows,int cols)指定容器的行数和列数
GridLayout(int rows,int cols, int hgap, int vgap)指定容器的行数和列数以及组件之间的水平,垂直间距

参数 rows 表示行数,cols代表列数,hgap 和 vgap 规定窗格之间水平和垂直方向的间距

e.g:
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			 //创建并设置JFrame 容器窗口
			JFrame f = new JFrame("FlowLayout");
			//所有组件左对齐,水平间距为20,垂直间距为30
			f.setLayout(new GridLayout(3,3));
			f.setSize(500,500);
			f.setLocation(600, 300); // 设置窗体在界面出现的位置
			JButton but1 = new JButton("1");
			JButton but2 = new JButton("2");
			JButton but3 = new JButton("3");
			JButton but4 = new JButton("4");
			JButton but5 = new JButton("5");
			f.add(but1);
			f.add(but2);
			f.add(but3);
			f.add(but4);
			f.add(but5);
			f.setVisible(true);
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dearzcs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值