SWT 和 JFace,第 4 部分: ToolBar、SashForm 以及其他控件和对话框
2007-05-18 12:50
573 查看
ToolBar、SashForm 以及其他控件和对话框 |
Barry Feigenbaum, 编程顾问, IBM 2006 年 2 月 20 日 “SWT 和 JFace” 系列的第 4 部分对于前几部分中使用 Java™ 技术、Eclipse 以及 SWT 和 JFace 库创建应用程序的知识进行扩展。这篇文章介绍了 ToolBar、CoolBar、Tray、 SashForm、Link 和其他控件以及其他几种对话框的使用方法。另请参阅本系列前几篇文章。 在本系列的前三篇文章中,我介绍了用与构建 Eclipse 和独立、功能丰富的 GUI 的 Eclipse、Eclipse Standard Widget Toolkit (SWT) 和 JFace GUI 工具包。另外还介绍了许多基本 GUI 控件、容器类型和布局管理器。随后展示了如何把这些控件组合到一个简单的工作应用程序中。还详细说明了如何为这些应用程序提供一个菜单系统。最后演示了如 何按照最佳实践创建方法和类的库,从而简化 GUI 开发。
org.eclipse.swt.widgets和 org.eclipse.swt.custom包中的各种小部件的详细观察(除非特别说明,否则这里讨论的控件都在 widgets包中)。关于背景知识,本文假设您至少阅读过这个系列的 第 1 部分。 简介 在后面几节中,我将讨论几个 GUI 控件。这些控件通过一个叫作 BarApp 的应用程序进行演示。正如前几部分所述,BarApp 是 BasicApplication 类(内含控件生成方法)的扩展。还使用了这个应用程序的几幅屏幕快照来展示不同控件的特性。 图 1 显示了我们讨论的所有控件,包括几个 ToolBar 和一个 CoolBar。最左边是三个有边框的 Composite(包含一个 Label),每个 Composite 都位于一个 SashForm 面板内。而 SashForm 本身又处在一个更大的 SashForm 中有边框的 Composite 内。靠近左侧中间是一个垂直的 ToolBar,它的顶部有一个 Open Tracker 按钮。在右上方是四个水平的 ToolBar(在两个 CBanner 中)—— 但只能看到两个;前两个使用了文本标签,后两个使用图片(同一张图片)。这几个 ToolBar 和 CBanner 全都在外围 SashForm 中的一个 Composite 中。从清单 1 的控件层次结构中可以清楚地看出这个结构。 图 1. BarApp 示例 清单 1. BarApp 应用程序的控件层次结构
ToolBar 与本系列 第 2 部分 中所描述的 Menu 控件类似。ToolBar 包含 ToolItem, ToolItem 可以有文本或图片作为按钮。一般来说,要么使用图片(AKA 图标)、要么使用文本,不能同时使用。如果仅使用图片,那么 ToolItem 需要有一个 ToolTip (帮助提供信息的短语或句子),这样当鼠标停留在 ToolItem 上时,会显示 ToolTip,解释图片的功能。 ToolBar 必须定义成以下两种完全互异的样式之一: HORIZONTAL—— 水平方向的 VERTICAL—— 垂直方向的 ToolBar 支持以下样式: FLAT—— 以平面样式显示项目 WRAP—— 项目换行 RIGHT—— 项目右对齐(及左对齐) SHADOW_OUT—— 显示阴影 ToolItem 必须定义成以下 5 种完全互异的样式之一: CHECK—— 可连续选择项目(复选)。 DROP_DOWN—— 项目(通常)显示下拉菜单。 PUSH—— 项目作为按钮,可直接引发动作(最常见的形式)。 RADIO—— 此类项目只能选择一个。 SEPARATOR—— 在项目组之间充当分隔符(通常是一个条),这个项目没有功能。 以下两个清单分别显示了创建 ToolBar 和 ToolItem 的代码。 清单 2. 创建 ToolBar 的方法
Display.getSystemTray()访问 Tray。与 ToolBar 相似,托盘中包含 TrayItem。TrayItem 没有样式选项,通常以 PUSHToolItem 的形式工作。 CoolBar 类似 ToolBar,区别在于用户可以重新安排栏中的 CoolItem,可以在 CoolItem 之间拖曳分隔条。对于栏中的 CoolItem 如何换行以及栏中项目显示的顺序,CoolBar 还允许更多控制。CoolBar 只支持 FLAT(或 NONE)样式。CoolItem 只支持 DROP_DOWN样式。与 ToolItem 不同,CoolItem 有相关的控件负责实际实现项目的 GUI。如果没有这个控件,CoolItem 就没有功能,通常也没有可视的实现。这个控件应当有一个 ToolTip。 下面两个清单分别显示了创建 CoolBar 和 CoolItem 的代码。请注意只能创建水平 CoolBar。 清单 4. 创建 CoolBar 的方法
清单 6. CoolItem 的创建示例
通常需要给应用程序 GUI 的某些部分分配可变的屏幕空间。第 3 部分 介绍了如何用 TabFolder 实现此目标。而本文将介绍使用 SashForm 的替代方法。 SashForm 显示多个(通常是两个)控件时,在控件间可以有分隔 Sash(框格)。 可移动此框格,在控件间分隔屏幕空间。请注意在多数情况下,SashFrom 中的控件是 Composite。要获得最佳使用性,Composite 应当有边框,以便让 Sash 看起来更清楚。SashForm 可以嵌套在其他 SashForm 中(看起来工作得很好),从而形成相当复杂的分隔空间的方法。SashForm 在 custom包中。 SashForm 必须定义成以下两种互斥的样式之一: HORIZONTAL—— 水平方向排列元素 VERTICAL—— 垂直方向排列元素 它们还支持 SMOOTH样式,在使用此样式时,框格的移动更流畅。 以下清单显示了创建 SashForm 的方法。 清单 7. 创建 SashForm 的方法
图 3. SashForm 示例 1 图 4. SashForm 示例 2
CBanner 是带有定制、预定义布局的特殊 Composite。它支持三个控件:Left、Right 和 Bottom,这三个控件都是可选的;通常使用的是 Left 和 Right。一般来说这些控件是 ToolBar。CBanner 在 Eclipse 中被用来使主工具区恰好位于主菜单下。CBanner 在 custom包中。 像 SashForm 一样,CBanner 提供了分隔器,可以容易地移动,从而分隔 Left 和 Right 控件之间分隔空间。CBanner 有一个 setSimple(boolean)方法,控制分隔器的形式。如果为 false,分隔器就采用粗曲线形式。 以下清单显示了创建 CBanner 的代码。
图 5. CBanner 示例
Link 与 PUSH按钮类似,但是看起来更像 Web 浏览器中的文本链接。Link 只支持文本内容。Link 可以使用普通文本或 HTML A标记作为内容(通常采用 <a href="某个 url">某些文本消息</a>的形式)。如果使用 A标记的语法,那么 Link 看起来就像 Web 链接;否则,看起来就像 Label。请注意在 Eclipse V3.1 中才可以使用 Link。 以下清单显示了创建 Link 的代码。 清单 8. 创建 Link 的方法
图 6. Link 示例
有些时候,您可能希望在修改控件大小或移动控件的同时给用户提供反馈。Tracker 可实现此目的。它创建一个临时的轮廓(实际是 GUI 上的透明窗口的边框),可以通过键盘或鼠标移动它或修改大小。在关闭 Tracker 时,应用程序通常就把相关控件移动或修改尺寸到与 Tracker 匹配的位置和尺寸。应用程序也可以跟着 Tracker 持续地移动控件或修改控件大小。 以下清单显示了创建 Tracker 的代码。 清单 9. 创建 Tracker 的方法
图 7. Tracker 示例
BasicApplication 类显示了确定退出的 MessageBox。这个 MessageBox 就是 SWT 提供的一组标准对话框的一个示例。其他一些有用的对话框是: FileDialog —— 允许用户选择文件 DirectoryDialog —— 允许用户选择目录 FontDialog —— 允许用户选择字体 ColorDialog —— 允许用户选择选择颜色值 请注意 Dialog 可能不允许您对其标题文本进行设置。 下面的清单显示了创建全部 4 种 Dialog 的代码。 清单 10. 创建多种 Dialog 的方法
图 8. 文件对话框示例 图 9. 目录对话框示例 图 10. 颜色选择示例 图 11. 字体选择示例
本 系列的第 4 部分介绍了 SWT 的控件 ToolBar、CoolBar、Tray、Link、SashForm、CBanner、Tracker 和不同的 Dialog。我们现在完成了对 SWT GUI 控件的游历。本系列的下一篇文章将进入 JFace 的领域,介绍如何使用 JFace ContentProvider 和 LabelProvider 构建表格和树的模型。
学习 您可以参阅本文在 developerWorks 全球站点上的 英文原文。 “在 Eclipse Workbench 之外使用 Eclipse GUI,第 1 部分: 单独使用 JFace 和 SWT” (developerWorks,2003 年 1 月)介绍了一些主要的 JFace 类(和几种 SWT 小部件),还介绍了一些技巧、窍门和设计问题。 浏览 developerWorks 上的所有 Eclipse 文章。 要了解有关 Eclipse 的更多信息,请参阅 Eclipse.org。您将在那里找到技术文档、how-to 文章、教育、下载、产品信息和其他更多信息。 “Migrate your Swing applications to SWT” (developerWorks,2004 年 1 月)是一个教程,其中包含 SWT 和 Swing 之间的比较和映射。 “使用 Eclipse 平台进行调试” (developerWorks,2003 年 5 月)解释了如何使用 Eclipse 调试器。 如果您是 SWT 和 JFace 方面的新手,那么请参阅本系列的 第 1 部分 (developerWorks,2005 年 5 月),这一部分介绍了创建简单 SWT 应用程序的有关知识。 本系列的 第 2 部分 扩展了第 1 部分中的内容,展示了如何使用组合框、列表、表和树控件,以及如何使用表单布局和可重用的 helper 方法。 请访问 developerWorks 开放源码专区 获得全面的 how-to 信息、工具和项目更新,帮助您使用开放源码技术进行开发并把它们用于 IBM 的产品。 获得产品和技术 从 Eclipse 的 Web 站点上获得 Eclipse 的最新版本,Eclipse 是一个用于 Java 应用程序开发的开源 IDE。 利用 IBM 试用软件 改进您的下一个开放源码开发项目,这些软件可以通过下载或从 DVD 中获得。 讨论 通过参与 developerWorks blogs 加入 developerWorks 社区。 关于作者
|
相关文章推荐
- SWT 和 JFace,第 4 部分:ToolBar、SashForm 以及其他控件和对话框
- SWT 和 JFace, 第 4 部分:ToolBar、SashForm 以及其他控件和对话框
- JAVA.SWT/JFace: JFace篇之JFace对话框以及日历DateTime控件
- SWT 和 JFace,第 3 部分: 了解 TabFolder、Canvas、StyledText 和其他多种控件
- SWT 和 JFace,第 3 部分:TabFolder、Canvas、StyledText 和其他多种控件
- SWT 和 JFace,第 3 部分: 了解 TabFolder、Canvas、StyledText 和其他多种控件
- SWT 和 JFace, 第 3 部分:了解 TabFolder、Canvas、StyledText 和其他多种控件
- SWT(JFace)体验之Sash(活动控件)
- html表格以及form表单部分标签的使用
- easyUi 打开对话框后控件赋值,以及赋值后不显示的问题
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 按分辨率不同调整对话框大小以及控件大小
- Eclipse的SWT使用ViewForm,ToolBar,ToolItem兼容问题解决
- 在CFormView中如何让对话框内的控件大小跟随单文档的大小变化
- QT中QMainWindow手动添加菜单栏以及其他控件
- Uncaught TypeError: $(...).Validform is not a function 如何解决,以及其他方式替换jquery功能
- SWT/JFace中Table相同列多种类型CellEditor以及参照类型编辑器的实现
- SWT/JFace如何动态不占位隐藏/显示控件
- 【TCP/IP详解 卷一:协议】第四章 ARP:地址解析协议 以及其他部分的一些知识