技术开发 频道

ToolBar、SashForm 以及其他控件和对话框

  通常需要给应用程序 GUI 的某些部分分配可变的屏幕空间。第 3 部分 介绍了如何用 TabFolder 实现此目标。而本文将介绍使用 SashForm 的替代方法。

  SashForm 显示多个(通常是两个)控件时,在控件间可以有分隔 Sash(框格)。可移动此框格,在控件间分隔屏幕空间。请注意在多数情况下,SashFrom 中的控件是 Composite。要获得非常好的使用性,Composite 应当有边框,以便让 Sash 看起来更清楚。SashForm 可以嵌套在其他 SashForm 中(看起来工作得很好),从而形成相当复杂的分隔空间的方法。SashForm 在 custom 包中。

  SashForm 必须定义成以下两种互斥的样式之一:

  HORIZONTAL —— 水平方向排列元素

  VERTICAL —— 垂直方向排列元素

  它们还支持 SMOOTH 样式,在使用此样式时,框格的移动更流畅。

  以下清单显示了创建 SashForm 的方法。

  清单 7. 创建 SashForm 的方法

1 protected SashForm createSashForm(Composite parent, int style) {
2     SashForm sf = new SashForm(parent, style);
3     return sf;
4 }
5 protected SashForm createVSashForm(Composite parent) {
6     return createSashForm(parent, SWT.VERTICAL);
7 }
8 protected SashForm createHSashForm(Composite parent) {
9     return createSashForm(parent, SWT.HORIZONTAL);
10 }
11

  图 3 和图 4 显示了 SashForm 的实际效果。图 3 展示的是外部的 SashForm 移动到右侧。图 4 则展示调整内部 SashForm 以使中央 Composite 变得更大。把这两个图与 图 1 对比,可以看出 Sash 预先配置的位置是,外部 Sash 20%,内部 Sash 33%。

  图 3. SashForm 示例 1

    图 4. SashForm 示例 2

0
相关文章