“ 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 应用程序的控件层次结构
0: BarApp {} 1: SashForm {} 2: Composite {} 3: SashForm {} 4: Composite {} 5: Label {Left Pane} 4: Composite {} 5: Label {Center Pane} 4: Composite {} 5: Label {Right Pane} 2: Composite {} 3: ToolBar {} 4: ToolItem {Open Tracker} 4: ToolItem {Check} 4: ToolItem {Drop} 4: ToolItem {} 4: ToolItem {Radio 1} 4: ToolItem {Radio 2} 4: ToolItem {Radio 3} 4: Label {} 3: CBanner {} 4: ToolBar {} 5: ToolItem {Press 1} 5: ToolItem {Check} 5: ToolItem {Drop} 5: ToolItem {} 5: ToolItem {Radio 1} 5: ToolItem {Radio 2} 5: ToolItem {Radio 3} 5: Label {} 4: ToolBar {} 5: ToolItem {Push 2} 5: ToolItem {Check} 5: ToolItem {Drop} 5: ToolItem {} 5: ToolItem {Radio 1} 5: ToolItem {Radio 2} 5: ToolItem {Radio 3} 5: Label {} 3: CBanner {} 4: ToolBar {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: Label {} 4: ToolBar {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: ToolItem {} 5: Label {} 3: CoolBar {} 4: CoolItem {Drop} 4: CoolItem {Drop} 4: CoolItem {Drop} 4: CoolItem {Drop} 4: CoolItem {Drop} 4: Button {Press Me 1} 4: Button {Press Me 2} 4: Button {Radio 1} 4: Button {Radio 2} 4: Button {Radio 3} 3: Link {<a href="http://www.somecorp.com">This is a link!</a>} 3: Composite {} 4: Button {File} 4: Button {Directory} 4: Button {Color} 4: Button {Font} |