4.4 布局管理器
4.4 布局管理器 布局管理器用来确定组件在容器中的位置和大小,AWT中定义了布局管理器接口LayoutManager的实现类来实现此功能。
4.4 布局管理器 LayoutManager 的实现类 FlowLayout BorderLayout GridLayout GridBagLayout CardLayout Null FlowLayout BorderLayout LayoutManager 的实现类
4.4 布局管理器 1、FlowLayout布局管理器 4.4 布局管理器 1、FlowLayout布局管理器 FlowLayout是一种最简单的布局管理,是Panel的默认布局。它以流式自左向右、自上而下地放置容器中的组件,其默认方式为居中对齐方式,也可以手工设置左对齐或右对齐。
创建默认的FlowLayout布局管理器: 以指定的对齐方式及间距创建FlowLayout布局管理器: 4.4 布局管理器 创建默认的FlowLayout布局管理器: FlowLayout() 以指定的对齐方式创建: FlowLayout(int) FlowLayout.LEFT FlowLayout.RIGHT FlowLayout.CENTER 以指定的对齐方式及间距创建FlowLayout布局管理器: FlowLayout(int,int,int) 对齐方式 组件行间距 组件列间距
4.4 布局管理器 FlowLayout布局管理器 最简单的界面布局方式,从左至右、从上至下按顺序依次摆放组件: 4.4 布局管理器 FlowLayout布局管理器 最简单的界面布局方式,从左至右、从上至下按顺序依次摆放组件: setLayout(new FlowLayout()); add(button1); add(button2); add(button3); add(button4); add(button5);
创建默认的BorderLayout布局管理器: 以指定的行、列间距创建BorderLayout布局管理器: 4.4 布局管理器 2、BorderLayout布局管理器 BorderLayout是Frame和Dialog的默认布局。它将整个容器分为东、西、南、北、中5个部分,加入组件时需要指明放置的位置。 创建默认的BorderLayout布局管理器: BorderLayout() 以指定的行、列间距创建BorderLayout布局管理器: BorderLayout(int,int) 组件行间距 组件列间距
4.4 布局管理器 BorderLayout的主要方法 int getHgap( ) 返回组件间距 int getVgap( ) 返回列间距 4.4 布局管理器 BorderLayout的主要方法 int getHgap( ) 返回组件间距 int getVgap( ) 返回列间距 void setHgap(int) 设置组件间距 void setVgap(int) 设置列间距
4.4 布局管理器 BorderLayout布局管理器 按东南西北中五个区域摆放组件,通常作为窗口主框架 setLayout(new BorderLayout()); add(“North”, button1); add(“West”, button2); add(“East”, button3); add(“South”, button4); add(“Center”, button5);
1 2 3 4 4.4 布局管理器 3、GridLayout布局管理器 4.4 布局管理器 3、GridLayout布局管理器 1 4 2 3 GridLayout GridLayout布局将容器划分成m行x n列大小相同的格子,组件放在格子中。 创建默认的GridLayout布局,所有组件在一行显示: GridLayout() 以指定的行数、列数创建GridLayout布局: GridLayout(int,int) 以指定的行数、列数、行间距、列间距创建布局: GridLayout(int,int,int,int)
4.4 布局管理器 GridLayout的主要方法 int getHgap( ) 返回组件间距 int getVgap( ) 返回列间距 4.4 布局管理器 GridLayout的主要方法 int getHgap( ) 返回组件间距 int getVgap( ) 返回列间距 void setHgap(int) 设置组件间距 void setVgap(int) 设置列间距 int getRows( ) 获取网格的行数 int getColumns( ) 获取网格的列数 void setRows(int) 设置网格的行数 void setColumns(int ) 设置网格的列数
4.4 布局管理器 GridLayout布局管理器 4.4 布局管理器 GridLayout布局管理器 最复杂、最灵活的布局方式,将容器空间划分成网格,每个组件可占用多 个网格。通常还需要使用GridBagConstraints对象设置组件占用的格数和 方位。加入组件前,需要调用布局管理器对象的setConstraints()方法设置 组件的显示约束。
4.4 布局管理器 GridLayout布局管理器 各组件占用相等的格空间 setLayout(new GridLayout(3, 2)); 4.4 布局管理器 GridLayout布局管理器 各组件占用相等的格空间 setLayout(new GridLayout(3, 2)); add(button1); add(button2); add(button3); add(button4); add(button5);
4.4 布局管理器 import java.applet.*; import java.awt.*; 4.4 布局管理器 import java.applet.*; import java.awt.*; import java.awt.event.*; public class TestGridLayout extends Applet { public void init() setLayout(new GridLayout(5,6)); //GridLayout布局策略5行6列30网格 for(int i=0;i<5;i++) for(int j=0;j<6;j++) // if((int)(Math.random()*100)>=0) if((int)(Math.random()*100)>=50) add(new Button(Integer.toString(i*6+j))); //随机加入按钮 else add(new Label()); //随机加入空白 }
4.4 布局管理器 4、GridBagLayout布局管理器 4.4 布局管理器 4、GridBagLayout布局管理器 GridBagLayout布局将容器划分成很多矩形小格子,每个组件可以占用一个或多个单元,从而可以指定每个组件所占空间的大小 创建默认的GridBagLayout布局: GridBagLayout() 通过设置和组件有关的GridBagConstraints对象的属性来分配每个组件,然后调用GridBagLayout的setContaints方法将组件与GridBagConstraints对象关联,最后将组件加入容器中。
4.4 布局管理器 GridBagConstaints对象的常用属性 gridwidth, gridheight 4.4 布局管理器 GridBagConstaints对象的常用属性 gridwidth, gridheight 这两个参数决定组件所占空间单元的行数和列数,默认值为1。 fill 当组件显示区域比其尺寸大时,该参数确定怎样重新定义组件大小,其默认值为: GridBagConstaints.NORE (不重新定义大小) 还可以为: GridBagConstaints.Horizontal (水平方向拉伸填满) GridBagConstaints.Vertical (垂直方向拉伸填满) GridBagConstaints.BOTH (两个方向拉伸填满) weightx, weighty 指定分配多余空间的方式
4.4 布局管理器 5、CardLayout布局管理器 4.4 布局管理器 5、CardLayout布局管理器 CardLayout布局将容器中的组件象扑克牌一样排列,每次只能显示最上面的一张。 创建默认的CardLayout布局:CardLayout() 以指定的行间距、列间距创建GridLayout布局: CardLayout(int,int) 将组件(通常是Panel)以CardLayout加入时,需要指定一个名字,如:add(“ONE”, Panel)
4.4 布局管理器 CardLayout的主要方法 int getHgap( ) 返回组件间距 int getVgap( ) 返回列间距 4.4 布局管理器 CardLayout的主要方法 int getHgap( ) 返回组件间距 int getVgap( ) 返回列间距 void setHgap(int) 设置组件间距 void setVgap(int) 设置列间距 void first( ) 显示第一个加入布局的组件 void last( ) 显示最后一个加入布局的组件 void next( ) 显示当前组件的下一个组件 void previous( ) 显示当前组件的前一个组件
4.4 布局管理器 6、Null布局管理器 null 布局管理器将主动权交给用户,由用户使用坐标系统来放置每个组件,即调用组件的setBounds()方法来设置位置和大小。 例如: this.setLayout(null); Label L1=new Label(“test”); L3.setBounds(new Rectangle(108, 2, 98, 37)); Add(L3); x 、y 坐标、长、宽
谢谢观看!