组件装在容器里,那么这些组件是如何布局的呢?在这以前全部的例子都是使用setBounds来 进行绝对坐标的定位的.shell
在实际应用过程当中大都是采用布局管理器的方式来布局容器中的组件.函数
布局管理器定义了组件的摆放方式.工具
为何VB,Delphi程序不须要布局管理器,而Java GUI程序却须要的呢?布局
由于Java开发程序的目标是要跨平台的.而每个操做系统的屏幕定义是不一样的.spa
若是像VB,Delphi那样使用绝对坐标定位界面组件,那么在Windows下看着好好的界面,到了Linux和MacOS上就会变得一塌糊涂.操作系统
除非你开发的JavaGUI程序只在Windows下用,可是即便这样,在不一样分辨率下,界面的形状也会不大同样.设计
布局管理器:orm
分为:对象
1.充满式(FillLayout类) 充满式布局管理器,组件的大小会尽可能的充满整个容器ci
把组件摆放成一行或者一列,并强制组件大小一致.里面的组件都会尽可能的充满这个容器.
另外FillLayout不能折行,不能设置边界距离和间距.
FillLayout通常使用于任务栏,工具栏,Group中的一组复选框,或者容器内只有一个组件的时候.
若是一个Shell中只有一个Group组件,那么将FillLayout用于shell.则其内的Group将彻底充满Shell.
FillLayout虽然功能单一,可是其自动充满窗口的方式,在SWT界面设计总仍是很经常使用的.
2.行列式(RowLayout类) 行列式布局管理器,简单的排列组件.
RowLayout能够是组件折行显示.并能够设置边界和间距.
另外,它还能够对每一个组件经过setLayoutData方法设置RowData对象,RowData用来设置组件的大小.
使用rowLayout.wrap控制自动拆行(默认值true)
使用SWT.VERTICAL式样控制排列方式
使用rowLayout.pack控制组件大小(默认值true)
使用rowLayoutjustify控制控件伸展(默认是false)
要想改变按钮自己的外观.则须要使用RowData类,RowData成为布局数据类.
为RowLayout专用,在讲GridLayout类时,它也有一个专用的布局数据类GridData.
GridData的目的也是和RowData同样,即改变容器中的组件和外观形状.
RowData最经常使用的定义格式是:new RowData(int width,int heigh)
例如:RowData rowData = new RowData(10,30)表示应用了这个rowData的组件将改变其大小,
变成宽10像素,高30像素.
3.网格式(GridLayout类) 网格式布局管理器,很是强大,能够胜任全部的布局.
GridLayout多是最经常使用的,功能最强大的标准布局类,固然也最复杂,
GridLayout的布局方式是把容器中的组件摆放在一个个格子里,它有许多设置项,而且同RowLayout同样也有
专用的布局数据类GridData.GridData的使用颇为复杂,
而GridLayout强大之处也在于它能够经过GridData来设置每个组件外观形状.
GridLayout类的基本实例
使用gridLayout.numColumns设置列数(默认值1)
使用makeColumnsEqualWidth把组件等距分开(默认false)
使用MarginWidth,Marginheight,HorizontalSpacing,VerticalSpaciong属性
4.堆栈式(StackLayout类) 像书页同样,只显示最前面的组件.
5.表格式(FormLayout类) 表格式布局管理器,经过建立组件各个边的距离来布局组件,和GridLayout同样强大.
使用marignWidth,marginHeight设置边距(这两个属性,来设置容器的左边距和上边距(单位:像素))
使用FormData的构造函数(FormLayout也有本身的布局数据类,他的使用方法是new FormData()或new FormData(int width,int height))
FormAttachment类的用法
FormAttachment是在FormData下的,更进一步的布局数据类,它的用法主要体如今它不一样的构造函数中.