7.1 布局管理器概述
FillLayout(充满式布局):在单行或单列中放置相同大小的控件,是最简单的布局。
RowLayout(行列式布局):在单行或者多行中放置控件,应用了fill、wrap和spacing等选项。
GridLayout(网格式布局):向表格一样放置控件。
FormLayout(表格式布局):与GridLayout功能差不多的布局,可以通过定义4个边的“附加值”来放置控件。
StackLayout(堆栈式布局):类似堆栈式的布局,只显示最上方的控件。
7.2 FillLayout(充满式布局)
规则:试图填充一行或一列,尽可能的充满整个面板,并且强制所有控件平均分配大小。FillLayout不会自动执行,也不能设置每个控件之间的空隙,但能够指定面板的四周的空白。
FillLayout layout = new FillLayout(SWT.VERTICAL);
或
FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL; // 默认为:SWT.HORIZONTAL
水平填充(SWT.HORIZONTAL):
垂直填充(SWT.VERTICAL):
设置四周补白:
FillLayout layout = new FillLayout();
layout.type=SWT.VERTICAL;
layout.marginHeight = 10; // 设置上下补白高度
layout.marginWidth = 20; // 设置左右
layout.spacing = 5; // 设置控件之间的空隙
shell.setLayout( layout );
显示效果:
7.3 RowLayout(行列式布局)
RowLayout填充控件时可以折行显示,并且可以使用RowData设置某一个指定控件的大小。
packagewww.swt.com.ch7;
import org.eclipse.swt.SWT;
public class RowLayoutSample {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display, SWT.SHELL_TRIM);
RowLayout layout = new RowLayout();
layout.type = SWT.HORIZONTAL;// 设置水平填充
layout.marginLeft = 5;// 左补白
layout.marginTop = 5;// 上补白
layout.marginRight = 5;// 右补白
layout.marginBottom = 5;// 下补白
layout.spacing = 2;// 控件的间隙
layout.wrap = true;// 是否折行显示
layout.pack = false;// false:控件平均分配大小
layout.justify = true;// 是否充满整个一行
shell.setLayout(layout);
new Button(shell, SWT.NONE).setText("B1");
new Button(shell, SWT.NONE).setText("Button2");
new Button(shell, SWT.NONE).setText("Wide Button3");
new Button(shell, SWT.NONE).setText("B4");
shell.layout();
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
显示效果:
设置控件的大小:
// layout.pack = false;// false:控件平均分配大小
Button b = new Button(shell, SWT.NONE);
b.setText("RowData");
b.setLayoutData(new RowData(100, 30));
显示效果:
设置是否等宽或等高:fill属性
当以水平方式填充时,fill属性试图使所用控件具有同样高度;当以垂直方式显示时,试图使用所有控件具有同样宽度。
水平填充,设置等高:layout.fill = true;
垂直填充,设置等宽:layout.fill = true;
7.4 GridLayout(网格式布局)
使用GridLayout布局,控件将会按照网格的方式进行填充。GridLayout所放置的控件可以有一个关联的布局数据对象GridData。GridLayout的强大功能在于,可以使用GridData为每一个控件设置不同的布局。
import org.eclipse.swt.SWT;
public class GridLayoutSample {
public static vo