1按钮组件(Button)
(1)Button组件常用样式
SWT.PUSH按钮
SWT.CHECK多选按钮
SWT.RADIO单选按钮
SWT.ARROW箭头按钮
SWT.NONE默认按钮
SWT.CENTER文字居中与SWT.NONE
SWT.LEFT左对齐
SWT.RIGHT右对齐
SWT.BORDER深陷型按钮
SWT.FLAT平面型按钮
一个Button可以指定多个样式,只要将指定的各个样式用符号“|”连接起来即可
Buttonbt=newButton(shell,SWT.CHECK|SWT.BORDER|SWT.LEFT);
多选、深陷、左对齐
(2)Button组件的常用方法
setText(Stringstring),设置组件的标签文字
setBounds(intx,inty,intwidth,intheight);//设置组件的坐标位置和大小
setEnabled(Booleanenabled);设置组件是否可用,默认为true
setFont(Fontfont);设置文字的字体
setForeground(Colorcolor);设置前景色
setBackground(Colorcolor);设置背景色
setImage(Imageimage);设置显示用的图片
setSelection(Booleanselected);设置是否选中,默认为false
setToolTipText(Stringstring);设置鼠标停留在组件上是显示的提示信息
2标签组件(Label)
(1)Label常见式样
SWT.CENTER居中
SWT.RIGHT右对齐
SWT.LEFT左对齐
SWT.NONE默认样式
SWT.WRAP自动换行
SWT.BORDER深陷型
SWT.SEPARATOR分栏符,默认为竖线分栏符
HORIZONTAL横线分栏符
3文本框组件(Text)
(1)Text常见式样
SWT.NONE默认式样
SWT.CENTER
SWT.RIGHT
SWT.LEFT
SWT.MULTI可以输入多行,需回车换行
SWT.WRAP可以输入多行,自动换行
SWT.PASSWORD密码型,输入字符显示成“*”
SWT.BORDER深陷型
SWT.V_SCROLL垂直滚动条
SWT.H_SCROLL水平滚动条
4下拉框组件(Combo)
(1)Combo常见样式
SWT.NONE默认
SWT.READ_ONLY只读
SWT.SIMPLE无需单击下拉框,列表会一直显示
(2)Combo下拉框常用方法
add(Stringstring)在Combo上添加一项
add(Stringstring,intindex)在Combo的第index(从0开始)项后插入一项
deselectAll()使Combo组件中的当前选项为空
removeAll()将Combo中的所有选项清空
setItems(String[]items)将数组中的各项依次加入到Combo中
select(intindex)将Combo的第index+1项设置为当前选择项
5列表框组件(List)
(1)List常见样式
SWT.NONE默认样式
SWT.V_SCROLL带垂直滚动条
SWT.MULTI允许复选
SWT.SINGLE允许单选
(2)常用方法
List和Combo组件的方法是一样的,但由于List可选择多项,而Combo只能选择一项
,所以List没有getText()方法,List的取值使用getSelection(),返回一个String
数组。
6菜单(Menu,MenuItem)
菜单(Menu、MenuItem)是常用的SWT组件,Menu是一个菜单栏,同时也是一个容器
,可以容纳菜单项(MenuItem)
(1)Menu样式
SWT.BAR菜单栏,用于主菜单
SWT.DROP_DOWN下拉菜单,用于子菜单
SWT.POP_UP鼠标右键弹出菜单
(2)MenuItem式样
SWT.CASCADE有子菜单的菜单项
SWT.CHECK选中后前面显示一个小勾
SWT.PUSH普通型菜单
SWT.RADIO选中后前面显示一个圆点
SWT.SEPARATOR分隔符
(3)建立菜单一般步骤
①首先建立一个菜单栏,需要用到SWT.BAR属性
MenumainMunu=newMenu(shell,SWT.BAR);
②在窗体中指定需要显示的菜单栏
shell.setMenuBar(mainMenu);
③创建顶级菜单项,需要使用SWT.CASCADE属性
MenuItemfileItem=newMenuItem(mainMenu,SWT.CASCADE);
fileItem.setText("file&F");
④创建与顶级菜单项相关的下拉式菜单
MenufileMenu=newMenu(shell,SWT.DROP_DOWN);
⑤将顶级菜单项与下拉菜单关联
fileItem.setMenu(fileMenu);
二级菜单的建立只需要重复③~⑤即可
容器类
1面板(Composite)
(1)Composite常用方法
getLayout()获得布局管理器
getLayoutData()得到布局数据
getParent()得到容纳该容器的父容器
getShell()得到容纳该容器的Shell
layout()将容器上的组件重新布局,相当于刷新
2分组框(Group)
Group是Composite的子类,所以两者用法基本相同。主要区别是Group显示有一个方框,且方
框线上还可以显示说明文字
3选项卡(TabFolder、TabItem)
选项卡包括一个选项卡(TabFolder类)和一个选项页(TabItem类),TabFolder是容器,可
以容纳其它容器和组件,但TabItem不是容器,可以把它看成是一个选项标签,TabFolder通过
TabItem来对其中的组件进行控制。每一个TabItem用setControl()来控制一个界面组件。
布局管理器
1充满式布局(FillLayout)
FillLayout是最简单的布局管理器,它把组件按一行或一列充满整个容器,并强制组件的大小一致。
一般组件高度和最高组件相同,宽度与最宽组件相同。FillLayout不能折行,不能设置边界距离和间距。
如果容器中只有一个组件,则该组件会充满整个容器。
(1)构造方法
FillLayout()创建按一行充满容器的对象。
FillLayout(inttype)创建按指定类型充满容器的对象,type有:SWT.HORIZONTAL(行)
SWT.VERTICAL(列)
(2)常用属性
inttype指定组件充满容器的类型
FillLayout.type=SWT.VERTICAL或SWT.HORIZONTAL;
2行式布局(RowLayout)
RowLayout可以是组件折行显示,可以设置边界距离和间距。另外,还可以对每个组件通过setLayoutData()
方法设置RowData对象。RowData用来设置组件大小。
(1)构造方法
RowLayout()创建按行放置组件的对象
RowLayout(inttype)创建按指定类型放置组件的对象。type:SWT.HORIZONTALSWT.VERTICAL
(2)常用属性
intmarginWidth组件距容器边缘的宽度(像素),默认为0
intmarginHeight组件距容器边缘的高度(像素),默认为0
intmarginTop组件距容器上边缘的距离(像素),默认为3
intmarginBottom组件距容器下边缘的距离(像素),默认为3
intspacing组件之间的距离,默认值为3
booleanjustify如果该属性为true,则组件间的距离随容器的拉伸而变大,默认值为false
booleanwrap如果该属性为true,当空间不足时会自动折行,默认为true
booleanpack如果该属性为true,组件大小为设定值;如果为false,则强制组件大小相同
默认为true
inttyepSWT.HORIZONTAL(行)SWT.VERTICAL(列)
(2)RowData类
RowData称为RowLayout的布局数据类,可用于改变容器中组件外观形状,其构造方法为
RowData(intwidth,intheight)
3网格式布局(GridLayout)
GridLayout是实用而且功能强大的标准布局,也是较为复杂的一种布局。这种布局把容器分成网格
,把组件放置在网格中。GridLayout有很多可配置属性,和RowLayout一样,也有专用的布局数据类
GridData.GridLayout的构造方法无参数,但可以通过GridData和设置GridLayout属性来设置组建的排列、
形状、和位置。
(1)GridLayout属性
intnumColumn设置容器的列数,组件从左到右按列放置,当组件数大于列数时,下一个组件
将自动添加到新的一行
booleanmakeColumnsEqualWidth强制使列都具有相同的宽度,默认为false
intmarginWidth设置组件与容器边缘的水平距离,默认值为5
intmarginHeight设置组件与容器边缘的垂直高度,默认值为5
inthorizontalSpacing设置列与列之间的间距,默认为5
intverticalSpacing设置行与行之间的间隔,默认为5
(2)布局数据类(GridData类)
GridData是GridLayout专用的布局数据类,用GridData可以构建很多复杂的布局方式。
①构造方法
GridData()创建一个属性值为默认值的对象
GridData(inttype)
②GridData常用类型
GridData.FILL通常与对象属性horizontalAlignment和verticalAlignment配合使用,充满对象
属性指定空间。
GridData.FILL_HORIZONTAL水平充满,
GridData.FILL_VERTICAL垂直充满
GridData.FILL_BOTH双向充满
GridData.HORIZONTAL_ALIGN_BEGINNING水平靠在对齐
GridData.HORIZONTAL_ALIGN_END水平靠右对齐
GridData.HORIZONTAL_ALIGN_CENTER水平居中对齐
③GridData常有对象属性如下:
inthorizontalSpan设置组件占用的列数,默认为1
intverticalSpan设置组件占用的行数,默认为1
horizontalAlignment设置组件对齐方式为水平方向
verticalAlignment设置组件对齐方式为垂直方向
grabExcessHorizontalSpace抢占额外水平空间
grabExcessVerticalSpace抢占额外垂直空间
horizontalAlignment和verticalAlignment可以取以下值:
GEGINNING开始(水平对齐时居左,垂直对齐时居上)
CENTER居中,默认
END结束(水平对齐时居右,垂直对齐时居下)
FILL充满
4表格式布局(FormLayout)
FormLayout是一种非常灵活、精确的布局方式,FormData使其专用的布局数据类。
此外,还增加了一个FormAttachment类。FormAttachment定义了组件的四边与父容器
(Shell、Composite)的边距,为保证组件在父容器中的相对位置不变,FormAttachment
类用不同的构造方法来实现组件的定位,用FormData和FormAttachment配合,可以创建复杂
的界面,而且当主窗体大小改变时,组件的相对位置能保持相对不变。
(1)FormLayout构造函数
FormLayout();
(2)FormLayout的属性
intmarginWidth//设置组件与容器边缘的水平距离,默认值为0
intmarginHeihgt//设置组件与容器边缘的垂直距离,默认为0
(3)FormData类
①FormData的构造方法
FormData()
FormData(intwidth,intheight)设置组件的宽度和高度
②FormData的属性
width设置组件的宽度
height设置组件的高度
top和FormAttachment配合设置组件底部和父容器底部的边距
left和FormAttachment配合设置组件右边和父容器右边的边框
如果FormData中的width和height设置的宽度和高度与FormAttachment设置的约束
发生冲突,则按照FormAttachment设置,width和height的设定值就不起作用了。
(3)FormAttachment类
Attachment的含义是附着、粘贴。FormAttachment类就是用来指定组件在父容器中粘贴的
位置。FormAttachment计算组件粘贴位置和组件大小的方法是依据下面的表达式:
y=ax+b
①FormatAttachment构造方法
FormatAttachment()组件紧贴父容器的左边缘和上边缘,如果父容器设置了FormLayout属
性marginWidth、marginHeight,则距父容器的上边缘和左边缘为其值。
FormatAttachment(Controlcontrol)以指定组件control为参照物
FormatAttachment(Controlcontrol,intoffset)以指定组件control为参照物,相对指定
组件偏移量为offset
FormatAttachment(Controlcontrol,intoffset,intalignment)对齐方式为alignment
SWT.TOPSWT.BOTTOMSWT.LEFTSWT.RIGHTSWT.CENTER
FormAttachment(intm,intn,intoffset)以组件相对与父容器宽度或高度的百分比(即斜率a)来给
组件定位,m为a的分子,n为分母,offset为偏移量
FormAttachment(intm,intoffer)n默认为100
FormAttachment(intm)n默认为100,offset默认为0
SWT的常用事件
所有事件、监听器和适配器都放在包org.eclipse.swt.events中。
(1)SWT中常用事件如下:
①addMouseListener鼠标监听器
mouseDown()
mouseUP()
mouseDoubleClick()
②addKeyListener按键监听器
keyPressed()
keyReleased()
③addSelectionListener组件选择监听器
widgetSelected()
④addFocusListener焦点监听器
focusGained()得到焦点
focusLost()失去焦点