JAVA笔记--初探SWT-2

容器类

面板Composite类

常用方法:

getLayout()  得到布局管理器

getLayoutData()  得到布局管理器数据

getParent()  得到该容器的父容器

getShell()  得到该容器的shell

layout()  将容器中的组件重新布局


分组框Group类

用法与Composite基本相同


选项卡

TabFolder类和TabItem类 TabFolder是容器,可以容纳其他容器和组件,但TabItem不是容器,可以把它看成一个选项标签,TabFolder通过TabItem对其中的组件进行控制,每个TabItem用setControl()方法来控制一个界面组件

		TabFolder tabFolder = new TabFolder(shell,SWT.NONE);
		tabFolder.setBounds(5,5,180,130);
		
		TabItem tabItem1 = new TabItem(tabFolder,SWT.NONE);
		tabItem1.setText("选项1");
		{
			Group group1 = new Group(tabFolder,SWT.NONE);
			group1.setText("录入信息");
			tabItem1.setControl(group1);
			
			Label lb1 = new Label(group1,SWT.NONE);
			lb1.setText("姓名:");
			lb1.setBounds(10,20,70,20);
			
			Text text1 = new Text(group1,SWT.BORDER);
			text1.setBounds(90,20,70,20);
			
			Label lb2 = new Label(group1,SWT.NONE);
			lb2.setText("地址:");
			lb2.setBounds(10,50,70,20);
			
			Text text2 = new Text(group1,SWT.BORDER);
			text2.setBounds(90,50,70,20);
		}
		
		TabItem tabItem2 = new TabItem(tabFolder,SWT.NONE);
		tabItem2.setText("选项2");
		{
			Group group2 = new Group(tabFolder,SWT.NONE);
			group2.setText("兴趣爱好:");
			tabItem2.setControl(group2);
			
			Button bt1 = new Button(group2,SWT.CHECK);
			bt1.setText("音乐");
			bt1.setBounds(20,20,70,20);
			
			Button bt2 = new Button(group2,SWT.CHECK);
			bt2.setText("美术");
			bt2.setBounds(20,50,70,20);
			
			Button bt3 = new Button(group2,SWT.CHECK);
			bt3.setText("体育");
			bt3.setBounds(20,80,70,20);
		}


布局管理器

不同操作系统对屏幕的定义不一样,SWT采用了布局方式,用户通过使用布局来控制组件中元素的的位置和大小等信息。

setBounds()  为绝对定位,组件较多时,使用布局管理器LayoutManager来定位,成为托管定位。

四种基本布局管理器:FillLayout RowLayout GridLayout FormLayout

布局管理器中,每当重新设置复合组件的大小,都需要重新定位。

FillLayout  充满式布局  容器中以相同大小以单行或单列排列组件

RowLayout  行列式布局  以单行或多行方式排列

GridLayout  网格式布局 组件可以占用制定的一个或几个网格

FormLayout  表格式布局  定义组件四个边的距离来排列组件 


FillLayout类

构造方法:

FillLayout()  创建一行充满的容器

FillLayout(int type)

type的取值:  

SWT.HORIZONTAL  按一行充满

SWT.VERTICAL  按一列充满

		FillLayout filllayout = new FillLayout(SWT.VERTICAL);
		shell.setLayout(filllayout);
		
		new Button(shell,SWT.PUSH).setText("按钮1");
		new Button(shell,SWT.PUSH).setText("按钮2");
		new Button(shell,SWT.PUSH).setText("按钮3");
		new Button(shell,SWT.PUSH).setText("按钮4");


行列式布局

RowLayout类使组件折行显示 可以设置边界距离和间距。可以对每个组件通过setLayoutData()方法设置RowData对象。RowData用来设置组件的大小。

构造方法:

RowLayout()

RowLayout(int type)

SWT.VERTICAL

SWT.HORIZONTAL

常用属性:

int marginWidth   组件具容器边缘的宽度(像素)默认0 

int marginHeight  。。。。。。。。高度。。。。。。0

int marginTop     。。。。。。。。上边缘。。。。。3

int marginBottom  。。。。。。。。下边缘。。。。。3

int spacing       组件间的距离 默认3

bollean justify   true:组件间的距离随容器拉伸而变大 默认false

boolean wrap      true:容器空间不足时 自动折行 默认 true

boolean pack      true:组件大小为设定值 fasle:强制组件大小相同 默认true

int type          默认按行放置 


RowData类 

RowLayout的布局数据类 用于改变组件的外观形状

RowData(int width, int height)


网格式布局

GridLayout类 较为复杂的一种布局

有专门的布局数据类GridData  可以通过GridData设置每一个组件的外观形状

GridLayout构造无参数 通过GridData和设置GridLayout属性来设置组件的排列及组件的形状和位置

  1. GridLayout的属性

int numColumns  设置容器列数 组件从左到右排列 组件数大于列数时 一个组件将自动添加新的一行

boolean makeColumnsEqualWidth  强制使列都有相同的宽度  默认falsse

int marginWidth  设置组件与容器边缘的水平距离  默认5

int marginHeight 设置组件与容器边缘的垂直距离  默认5

int horizontalSpacing  设置列与列之间的间隔  默认5

int verticalSpacing  设置行与行之间的间隔  默认5

布局数据类

GridData类

构造方法:

GridData()

GridData(int type)

GridData常用type: 这些常数不在SWT中 而在GridData中

GridData.FILL 通常与GridData属性horizontalAlignment和verticalAlignment配合使用 充满对象属性指定的空间

GridData.FILL_HORiZONTAL  水平充满 

GridData.FILL_VERTICAL  垂直充满

GridData.FILL_BOTH  双向充满

GridData.HORIZONTAL_ALIGN_BEGINNING  水平对齐靠左 组件在网格中靠左放置

GridData.HORIZONTAL_ALIGN_CENTER  水平对齐居中 组件在网格中居中位置

GridData.HORIZONTAL_ALIGN_END  水平对齐靠右 组件在网格中靠右放置

GridData常用对象属性

int horizontalSpan  设置组件占用的列数 默认1

int verticalSpan  设置组件占用的行数 默认1

horizantalAlignment  设置组件的对齐方式为水平方向(取值为BEGINNING CENTER END FILL 默认BEGINNING)

verticalAlignment  设置组件的对齐方式为垂直方向(取值同上 默认CENTER)

grabExcessHorizontalSpace  抢占额外的水平空间

grabExcessVerticalSpace  抢占额外的垂直空间


表格式布局

FormLayout类

FoemData类 FormAttachment类























你可能感兴趣的:(java,标签)