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:
package chapter4; import org.eclipse.swt.SWT; 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(); //可以通过设置相关属性来改变外观 :-) rowLayout.justify = true; 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"); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } |
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(); } }