Layouts Tutorial
Layout是用来控制容器(Composite)中控件的位置(position)和大小(size)的机制,前面我们也有提到,如果一个控件没有设置大小,它的默认值是0,就不会显示在界面中(SWT不像swing/JavaFX那样会给控件自动分配大小)。
既然说了控件的位置和大小,有一张图你一定会感兴趣:

这张图详细的描述了Composite(图上是一个TabFolder)的位置相关的属性。
* location:这个Composite的位置。
* clientArea:这个Composite用来放置子控件的区域。
* trim:这个控件用来放置抬头或标题的区域(普通的Composite没有此区域,像Shell,Group,TabFolder这些Composite都有)。
* horizontal margin:水平方向的留白区域,左右两边都有,并且相同。
* vertical margin:垂直方向的留白区域,上下两边都有,并且相同。
*horizontal spacing:水平方向上两个相邻控件之间的留白区域。
*vertical spacing:垂直方向上两个相邻控件之间的留白区域。`
上面说了容器(Composite)中的放置控件的区域,那么关于具体的控件,怎么设置位置(position)和大小(size)呢?
setLocation(x, y):设置位置。setSize(width, height):设置大小。setBounds(x, y, widht, height):设置位置和大小。computeSize(width, height):计算出当前控件的最好或首选的大小。里面的参数可以用(SWT.DEFAULT)来代替,也可以给定具体的数值。一般情况下,在使用Layout布局的时候,如果对控件的大小没有具体的说明,都会调用此方法计算控件的大小。setLayoutData(LayoutData):这个方法是和父容器的Layout配套使用的,里面可以配置一些控件的具体参数,详细内容请参考各个Layout的实现。
SWT中提供了一些标准的Layout类,当然,你也可以自定义一些Layout,但所有的Layout都必须继承自org.eclipse.swt.widgets.Layout类。
先看看SWT中的标准的Layout吧:它们都包含在org.eclipse.swt.layout.*包中。
在SWT的custom包中也有一个Layout,org.eclipse.swt.custom.StackLayout
参考资料:
Back to Home 上一篇:Drag and Drop Tutorial 下一篇:FillLayout