-
Notifications
You must be signed in to change notification settings - Fork 5
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
参考资料:
Soyatec Eclipse Plug-in and RCP Tutorials, wrote by Jin Liu (jin.liu@soyatec.com).
Eclipse Plug-in Development Tutorial
-
Standard Widget Toolkit Tutorial
-
Widgets Tutorial
- Label Tutorial
- Button Tutorial
- Text Tutorial
- Combo Tutorial
- List Tutorial
- Scale Tutorial
- Slider Tutorial
- Spinner Tutorial
- DateTime Tutorial
- Table Tutorial
- Tree Tutorial
- ToolBar Tutorial
- CoolBar Tutorial
- ProgressBar Tutorial
- ScrollBar Tutorial
- TaskBar Tutorial
- ExpandBar Tutorial
- Menu Tutorial
- Sash Tutorial
- ToolTip Tutorial
- Tray Tutorial
- Link Tutorial
- Browser Tutorial
- Dialog Tutorial
- Common Properties Tutorial
- Components Tutorial
- Shell Tutorial
- Display Tutorial
- SWT Custom Widgets Tutorial
- Drag and Drop Tutorial
- Layouts Tutorial
- Resource Management Tutorial
-
Widgets Tutorial
-
[JFace Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Tutorial)
- [JFace Viewers Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Viewers-Tutorial)
- [TableViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/TableViewer-Tutorial)
- [TreeViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/TreeViewer-Tutorial)
- [ListViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/ListViewer-Tutorial)
- [ComboViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/ComboViewer-Tutorial)
- [JFace Dialogs Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Dialogs-Tutorial)
- [JFace DataBinding Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-DataBinding-Tutorial)
- [JFace Viewers Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Viewers-Tutorial)
-
[Plug-in Development Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Plug-in-Development-Tutorial)
- [Views Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Views-Tutorial)
- [Editors Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Editors-Tutorial)
- [Action and Menus Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Action-and-Menus-Tutorial)
- [Preferences Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Preferences-Tutorial)
- [ExtensionPoint Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/ExtensionPoint-Tutorial)
- [Publish Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Publish-Tutorial)
- [Feature Project Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Feature-Project-Tutorial)
- [UpdateSite Project Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/UpdateSite-Project-Tutorial)
- [Fragment Project Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Fragment-Project-Tutorial)
-
[Eclipse 3.x RCP Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Eclipse-3.x-RCP-Tutorial)
- [Branding Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Branding-Tutorial)
- [Publish RCP Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Publish-RCP-Tutorial)
-
[Graphical Editing Framework Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/GEF-Tutorial)