
java图形界面的布局设计.ppt
13页淮海工学院淮海工学院 计算机课程6.5 图形界面的布局设计图形界面的布局设计v每一个容器组件都有一个默认的布局管理方式,也可以用setLayout方法来设置其他布局管理器一旦确定了布局管理方式,容器组件就可以用add方法加入组件 v布局管理器用来确定组件在容器中的位置和大小,AWT中定义了布局管理器接口LayoutManager的实现类来实现此功能 淮海工学院淮海工学院 计算机课程LayoutManager的实现类:的实现类: FlowLayout BorderLayout GridLayout GridBagLayout CardLayout null6.5.1 FlowLayout布局管理器布局管理器FlowLayout是一种最简单的布局管理,是一种最简单的布局管理,是是Panel的默认布局的默认布局。
它以流式它以流式自左向右、自上而下自左向右、自上而下地放地放置容器中的组件,其默认方式为居中对齐方式,置容器中的组件,其默认方式为居中对齐方式,也可以手工设置左对齐或右对齐也可以手工设置左对齐或右对齐 淮海工学院淮海工学院 计算机课程•创建默认的FlowLayout布局管理器: FlowLayout()•以指定的对齐方式创建: FlowLayout(int) •以指定的对齐方式及间距创建FlowLayout布局管理器: FlowLayout(int,int,int) 对齐对齐方式方式组件行组件行间距间距组件列组件列间距间距 淮海工学院淮海工学院 计算机课程6.5.2 BorderLayout布局管理器布局管理器•BorderLayout是Frame和Dialog的默认布局它将整个容器分为东、西、南、北、中5个部分,加入组件时需要指明放置的位置v创建默认的BorderLayout布局管理器: BorderLayout()v 以指定的行、列间距创建BorderLayout布局管理器: BorderLayout(int,int)组件行组件行间距间距组件列组件列间距间距 淮海工学院淮海工学院 计算机课程BorderLayout的主要方法的主要方法int getHgap( )返回组件间距返回组件间距int getVgap( )返回列间距返回列间距void setHgap(int)设置组件间距设置组件间距void setVgap(int)设置列间距设置列间距 淮海工学院淮海工学院 计算机课程6.5.3 GridLayout布局管理器布局管理器•GridLayout布局将容器划分成布局将容器划分成m行行x n列列大小相同的大小相同的格格子子,组件放在格子中。
组件放在格子中•创建默认的创建默认的GridLayout布局,所有组件在一行显示:布局,所有组件在一行显示: GridLayout()()•以指定的行数、列数创建以指定的行数、列数创建GridLayout布局:布局: GridLayout((int,,int)) •以指定的行数、列数、行间距、列间距创建布局:以指定的行数、列数、行间距、列间距创建布局: GridLayout((int,,int,,int,,int)) 淮海工学院淮海工学院 计算机课程GridLayout的主要方法的主要方法int getHgap( )返回组件间距返回组件间距int getVgap( )返回列间距返回列间距void setHgap(int)设置组件间距设置组件间距void setVgap(int)设置列间距设置列间距int getRows( )获取网格的行数获取网格的行数int getColumns( )获取网格的列数获取网格的列数 void setRows(int)设置网格的行数设置网格的行数void setColumns(int )设置网格的列数设置网格的列数 淮海工学院淮海工学院 计算机课程import java.applet.*;import .*;import .*;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++){// ()*100)>=0) ()*100)>=50) add(new Button(Integer.toString(i*6+j)));//随机加入按钮随机加入按钮 else add(new Label());//随机加入空白随机加入空白} }} 淮海工学院淮海工学院 计算机课程6.5.4 GridBagLayout布局管理器布局管理器•GridBagLayout布局将容器划分成很多矩形小格子,每个组件可以占用一个或多个单元,从而可以指定每个组件所占空间的大小•创建默认的GridBagLayout布局: GridBagLayout() 通过设置和组件有关的GridContaints对象的属性来分配每个组件,然后调用GridBagLayout的setContaints方法将组件与GridContaints对象关联,最后将组件加入容器中。
淮海工学院淮海工学院 计算机课程GridContaints对象的常用属性(1)gridwidth, gridheight 这两个参数决定组件所占空间单元的行数和列数,默认值为12)fill 当组件显示区域比其尺寸大时,该参数确定怎样重新定义组件大小,其默认值为: (不重新定义大小) 还可以为: (水平方向拉伸填满) (垂直方向拉伸填满) (两个方向拉伸填满)(3)weightx, weighty 指定分配多余空间的方式 淮海工学院淮海工学院 计算机课程6.5.5 CardLayout布局管理器布局管理器•CardLayout布局将容器中的组件象扑克牌一样排列,每次只能显示最上面的一张•创建默认的CardLayout布局: CardLayout()•以指定的行间距、列间距创建GridLayout布局: CardLayout(int,int) 将组件(通常是Panel)以CardLayout加入时,需要指定一个名字,如:add(“ONE”, Panel) 淮海工学院淮海工学院 计算机课程CardLayout的主要方法int getHgap( )返回组件间距返回组件间距int getVgap( )返回列间距返回列间距void setHgap(int)设置组件间距设置组件间距void setVgap(int)设置列间距设置列间距void first( )显示第一个加入布局的组件显示第一个加入布局的组件void last( )显示最后一个加入布局的组件显示最后一个加入布局的组件void next( )显示当前组件的下一个组件显示当前组件的下一个组件void previous( )显示当前组件的前一个组件显示当前组件的前一个组件 淮海工学院淮海工学院 计算机课程6.5.6 null 布局管理器布局管理器•null 布局管理器将主动权交给用户,由用户使用坐标系统来放置每个组件,即调用组件的setBounds()方法来设置位置和大小。
如: this.setLayout(null); Label L1=new Label(“test”); L3.setBounds(new Rectangle(108, 2, 98, 37)); Add(L3);X 、、y 坐标、长、宽坐标、长、宽。












