【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 的方法
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