RowLayout | ||||||
RowLayout和FillLayout相似,它们放置全部的组件在单行或单列.但是RowLayout没有强制全部的组件相同的大小.它能当组件在行或列上超出父组件空间时自动换行. RowLayout使用RowData来决定组件的初始化大小(宽和高).你可以传递RowData对象给组件的setLayoutData()方法.布局管理器(RowLayout)通过组件的RowData来决定组件的大小和位置. | ||||||
注意: 在SWT组件中,有一个方法名为setData()名字有点像setLayoutDate().如果你设置了控件的相关属性,却没有达到你想要的效果,请确认你使用的是setLayoutData()方法. | ||||||
RowData类有两个公共的数据成员: | ||||||
RowData提供两个构造函数来指定高和宽.
RowLayout和FillLayout相似,也提供属性type(SWT.HORIZONTAL或SWT.VERTICAL)来配置布局为行或列.RowLayout同时也提供另外几个属性来定制布局风格. RowLayout的属性 |
属性 | 描述 |
boolean justify | 如果为true,类似于平均分配当前行或行上的空间.默认为false. |
int marginBottom, marginLeft, marginRight, marginTop | 分别定义底,左,右,上边距,以像素为单位.默认为3像素. |
boolean pack | 如果为true,通知控件调整为它自已最合适的大小,默认为true. |
int spacing | 设置邻近控件间的间距,像素为单位,默认为3像素. |
int type | 布局管理器中控件布局的方式,默认为SWT.HORIZONTAL按行排列,SWT.VERTICAL时按列排列. |
boolean warp | 如果为true,当行或列的超出布局空间大小时自动换行到下一行或列.默为认true. |
boolean fill | 当水平填充时,子控件是否等高,当垂直填充时,子控件是否等宽.默认为false. |
.
RowLayout有两个构造函数,一个为空,一个为带单参数type.
下面是一个简单的RowLayout布局程序运行的示例:

Example:
下面是一个简单的RowLayout布局程序运行的示例:

Example:![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
RowLayout和RowData一起使用,可以在相当大程度上改变程序外观,下面是一个例子:![]() |
package chapter4;
![]()
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
![]()
/**
* @author HexUzHoNG
*
*/
public class RowLayoutDemo {
![]()
public static void main(String[] args) {
![]()
Display display = new Display();
Shell shell = new Shell(display);
![]()
RowLayout rowLayout = new RowLayout(SWT.VERTICAL);
rowLayout.marginLeft = 10;
![]()
shell.setLayout(rowLayout);
![]()
new Button(shell, SWT.PUSH).setText("one");
new Button(shell, SWT.PUSH).setText("two");
new Button(shell, SWT.PUSH).setText("three");
new Button(shell, SWT.PUSH).setText("four");
new Button(shell, SWT.PUSH).setText("five");
new Button(shell, SWT.PUSH).setText("six");
![]()
Button seven = new Button(shell, SWT.PUSH);
RowData rowDate = new RowData(80, 80);
seven.setLayoutData(rowDate);
seven.setText("seven");
![]()
shell.open();
![]()
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
![]()
}
![]()
![]()