技术开发 频道

了解TabFolder、Canvas和其他多种控件

  【IT168 技术文章】SWT 支持这些控件的一个混合版本,在 custom 包中,这些控件被称为 TableTree。在 Eclipse V3.1 中,Tree 控件被增强为 TableTree 的一个功能替代,TableTree 则遭到反对。图 1 展示了一个表格式(TableTree 仿真模式)的示例 Tree。正如您可以看到的,树中的每一个项都被划分到列中。“第 2 部分”中展示了如何创建这些表和树,而创建一个表 Tree 实质上就是将这两项任务组合在一起。创建 TableTree 的代码与创建 Tree 的代码非常相似,因此,如果需要支持 Eclipse 的以前版本,那么可以使用 TableTree 控件。

  图 1. 表树的例子

  本文的其余部分将展示如何使用许多新的 SWT 控件。我将在一个称为 TabFolder1App 的单个应用程序的上下文中做这一介绍。

  TabFolder(和 CTabFolder)

  TabFolders 是一个创建使用有限数量空间的复杂 GUI 的简便方法。一个选项卡文件夹(tab folder)被分成一个或多个选项卡(tab),其中每个选项卡都是它本身的一个完整 GUI。一次只显示一个选项卡。在 custom 包中,CTabFolder 是 TabFolder 的增强版,它看起来更好一些,并且可以支持选项卡的关闭。

  必须将 TabFolders 和 CTabFolders 定义为以下两个相互排斥的样式之一:

  TOP —— 将选项卡放置在顶部。

  BOTTOM —— 将选项卡放置在底部。

  CTabFolder 支持其他一些可选样式:

  FLAT —— 为文件夹提供一个扁平的外观。

  BORDER —— 在控件的周围显示边界。

  CLOSE —— 允许选项卡关闭(显示一个 Close 按钮)。

  与包含一些项的 Trees 和 Tables 类似,TabFolders 也包含一些定义选项卡的 TabItems(或者 CTabItems)。TabFolders 还包含多个控件(通常是 Composites),每个控件都定义了选项卡的一个内容。TabItem.setControl 方法将该控件与相关的选项卡连接起来。

  图 2 展示了一个示例 TabFolder,而图 3 展示了一个使用 CTabFolder 的类似 GUI。注意,选定的 Canvas 选项卡在 CTabFolder 上有一个 Close (X) 按钮。

  图 2. 带有 4 个选项卡的 TabFolder

  图 3. 带有 4 个选项卡的 CTabFolder

  清单 1 详细介绍了一种方法,并展示了如何创建 TabFolders;也存在用于创建 CTabFolders 的类似代码。

  清单 1. 用于创建 TabFolder 和 TabItem 的方法

1 protected TabFolder createTabFolder(Composite parent, int style) {
2     return new TabFolder(parent, style);
3 }
4 protected TabItem createTabItem(TabFolder parent, int style,
5                       String text, Image icon, Control ctl) {
6     TabItem ti = new TabItem(parent, style);
7     if (text != null) {
8         ti.setText(text);
9     }
10     if (icon != null) {
11         ti.setImage(icon);
12     }
13     if (ctl != null) {
14         ti.setControl(ctl);
15     }
16     return ti;
17 }
18 protected TabItem createTabItem(TabFolder parent,
19                       String text, Image icon, Control ctl) {
20     return createTabItem(parent, SWT.NONE, text, icon, ctl);
21 }
22
0
相关文章