首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SWT和 JFace,第 4 部分 简介(3)

SWT和 JFace,第 4 部分 简介(3)

SashForm[size=1.0625]通常需要给应用程序 GUI 的某些部分分配可变的屏幕空间。第 3 部分 介绍了如[size=1.0625]何用 TabFolder 实现此目标。而本文将介绍使用 SashForm[size=1.0625] 的替代方法。
[size=1.0625]SashForm 显示多个(通常是两个)控件时,在控件间可以有分隔 Sash(框格)。可移动此框格,在控件间分隔屏幕空间。请注意在多数情况下,SashFrom 中的控件是 Composite。要获得最佳使用性,Composite 应当有边框,以便让 Sash 看起来更清楚。SashForm 可以嵌套在其他 SashForm 中(看起来工作得很好),从而形成相当复杂的分隔空间的方法。SashForm 在 custom 包中。
[size=1.0625]SashForm 必须定义成以下两种互斥的样式之一:
  • HORIZONTAL —— 水平方向排列元素
  • VERTICAL —— 垂直方向排列元素
[size=1.0625]它们还支持 SMOOTH 样式,在使用此样式时,框格的移动更流畅。
[size=1.0625]以下清单显示了创建 SashForm 的方法。
清单 7. 创建 SashForm 的方法

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875]5


[size=0.875]6


[size=0.875]7


[size=0.875]8


[size=0.875]9


[size=0.875]10


[size=0.875][size=0.875]protected SashForm createSashForm(Composite parent, int style) {
[size=0.875]    SashForm sf = new SashForm(parent, style);
[size=0.875]    return sf;
[size=0.875]}
[size=0.875]protected SashForm createVSashForm(Composite parent) {
[size=0.875]    return createSashForm(parent, SWT.VERTICAL);
[size=0.875]}
[size=0.875]protected SashForm createHSashForm(Composite parent) {
[size=0.875]    return createSashForm(parent, SWT.HORIZONTAL);
[size=0.875]}




[size=1.0625]图 3 和图 4 显示了 SashForm 的实际效果。图 3 展示的是外部的 SashForm 移动到右侧。图 4 则展示调整内部 SashForm 以使中央 Composite 变得更大。把这两个图与 图 1 对[size=1.0625]比,可以看出 Sash 预先配置的位置是,外部 Sash 20%,内部 Sash 33%。
图 3. SashForm 示例 1图 4. SashForm 示例 2CBanner[size=1.0625]CBanner 是带有定制、预定义布局的特殊 Composite。它支持三个控件:LeftRightBottom,这三个控件都是可选的;通常使用的是 Left 和 Right。一般来说这些控件是 ToolBar。CBanner 在 Eclipse 中被用来使主工具区恰好位于主菜单下。CBanner 在 custom 包中。
[size=1.0625]像 SashForm 一样,CBanner 提供了分隔器,可以容易地移动,从而分隔 Left 和 Right 控件之间分隔空间。CBanner 有一个 setSimple(boolean) 方法,控制分隔器的形式。如果为 false,分隔器就采用粗曲线形式。
[size=1.0625]以下清单显示了创建 CBanner 的代码。

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875][size=0.875]protected CBanner createCBanner(Composite parent) {
[size=0.875]    return new CBanner(parent, SWT.NONE);
[size=0.875]}




[size=1.0625]图 5 显示了一个简单的 CBanner 和一个复杂的 CBanner。
图 5. CBanner 示例
山不在高,有仙则名;水不在深,有龙则灵。
返回列表