Java面向对象笔记6|GridBagLayout网格包布局管理器

GridBagLayout网格包布局管理器

介绍

GridBagLayout 布局管理器是最灵活、最复杂的布局管理器,它是在GridLayout 的基础上发展而来,但它不需要组件的尺寸大小一致,每个组件可以占有一个或多个网格单元,所占有的网格单元称为组件的显示区域,组件也可以按任意顺序添加到容器的任意位置,从而真正实现了自由地安排容器中的每个组件的大小和位置。

GridBagLayout的使用方法

为了使用 GridBagLayout 布局管理器,必须构造一个 GridBagConstraints 对象,这个对象指定了组件显示的区域在网格中的位置,以及应该如何摆放组件,它通过设置下列GridBagConstraints 的变量来实现。
gridx,gridy:指定组件左上角在网格中的行与列。容器中最左边列的 gridx=0,最上边行的gridy=0。这两个变量的默认值为GridBagConstraints.RELATIVE,表示对应的组件将放在前面放置组件的右边或下面。
gridwidth,gridheight:指定组件显示区域所占的列数与行数,以网格单元而不是以像素为单位,默认值为 1。GridBagConstraints.REMAINDER 指定组件是所在行或列的最后一个组件,GridBagConstraints.RELATIVE 指定组件是所在行或列的倒数第二个组件。
fill:指定组件填充网格的方式。它可以是如下的值:GridBagConstraints.NONE(默认值,组件的大小不改变)、GridBagConstraints.HIORIZONTAL(组件横向充满显示区域,但不改变组件的高度)、GridBagConstraints.VERTICAL(组件纵向充满显示区域,但不改变组件的宽度)、GridBagConstraints.BOTH(组件横向、纵向充满其显示区域)。
ipadk,ipady:指定组件显示区域的内部填充,即在组件最小尺寸之外需要附加的像素数,默认值为 0。因此,组件的宽度最少是它的最小宽度加上 ipadx × 2,组件的高度最少是它的最小高度加上 ipady × 2。
insets:指定组件显示区域的外部填充,即组件与其显示区域边缘之间的空间。默认时,组件没有外部填充。
anchor:指定组件在显示区域中的摆放位置。其值可以为:
GridBagConstraintS.CENTER(默认值)、GridBagConstraints.NORTH、 GridBagConstraints.NORTHEAST、GridBagConstraints. EAST、GridBagConstraints.SOUTHEAST、GridBagConstraints. SOUTH、GridBagConstraints.SOUTHWEST、GridBagConstraints. WEST、
GridBagConstraints.NORTHWEST。
weightx,weighty:用来指定在容器大小改变时,增加或减少的空间如何在组件间分配。默认值是 0,即所有的组件将聚拢在容器的中心,多余的空间将放在容器边缘与网格单元之间。每一列组件的 weightx 值指定为该列组件的 weightx 的最大值:每一行组件的 weighty 值指定为该行组件的 weighty 的最大值。weightx 和weighty 的取值一般在0.0-1.0之间,数值大表明组件所在的行或列将获得更多的空间。

Demo
package AWT;

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

public class GridBagLayoutWindow extends Frame{
	
	public static void main(String[] args) {
		GridBagLayoutWindow window =new GridBagLayoutWindow("GridBagLayout");
		window.setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		c.fill = GridBagConstraints.BOTH;//组件充满显示区域
		c.weightx = 1.0;
		window.addButton("Button 1", c);
		window.addButton("Button 2", c);
		window.addButton("Button 3", c);
		c.gridwidth=GridBagConstraints.REMAINDER;//到行结束
		window.addButton("Button 4", c);
		c.weightx = 0.0; //恢复为缺省值
		window.addButton("Button 5", c);
		c.gridwidth =GridBagConstraints.RELATIVE;//所在行的倒数第二个组件
		window.addButton("Button 6", c);
		c.gridwidth =GridBagConstraints.REMAINDER;//到行结束
		window.addButton("Button 7", c);		
		c.gridwidth =1;//恢复为缺省值
		c.gridheight=2;
		c.weighty=1.0;
		window.addButton("Button 8", c);
		c.weighty=0.0;//恢复为缺省值
		c.gridwidth =GridBagConstraints.REMAINDER;//到行结束
		c.gridheight=1;//恢复为缺省值
		window.addButton("Button 9", c);
		window.addButton("Button 10", c);
		window.pack();
		window.setVisible(true);
	}
	public GridBagLayoutWindow(String str) {
		super(str);
	}
	private void addButton(String name,GridBagConstraints gbc) {
		Button button =new Button(name);
		add(button,gbc);//按指定约束加入部件		
	}
}

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值