了解Eclipse中的JFace数据绑定,第3部分: 使用高级功能2011-02-11 IBM Scott Delap开始之前关于本系列“了解 Eclipse 中的 JFace 数据绑定” 系列教程的这一部分介绍了 Eclipse V3.2 中附带的新 JFace 数据绑定应用程序编程接口 (API) 的高级功能。使用数据绑定 API 可以将您从必须编写样本同步代码的痛苦中解脱出来。JFace 数据绑定 API 为用户界面 (UI) 提供了这种功能,该功能是用 Standard Widget Toolkit (SWT) 和 JFace 编写的。系列教程的前一部分介绍了 API 中的基本组件。本部分将介绍诸如测试、表、转换程序和和验证之类的高级主题。关于本教程本教程说明了如何使用 JFace 数据绑定的高级功能,例如转换程序、验证和表。还介绍了如何以更加可测试的方式构造 UI。您将了解如何利用 JFace 数据绑定 API 来编写结构良好且可测试的 Java™ UI 应用程序。先决条件本教程面向具有一定的 Java 编程语言和 Eclipse 使用经验的开发人员。您必须对 SWT 和 JFace 有一定的基本了解,并阅读了 第 1 部分。系统要求要运行本教程中的示例,则必须要有一个 Eclipse V3.2 软件开发包 (SDK) 及一台能够运行该软件开发包的计算机。本教程中的示例将使用 Java V5 自动装箱。因此,首选使用 Java V1.5 Java 运行时环境 (JRE)。编写可测试代码同步可以为 UI 测试做些什么?它是 Java UI 开发人员用来编写可测试 UI 的强大工具。大多数桌面应用程序开发人员都不测试其 UI。虽然服务器端代码通常都经过严格测试,但是大部分桌面业务逻辑从未接受过 JUnit 的测试。有一些工具可用于执行测试任务,例如 Mercury Interactive Corp. 的产品 Abbot;以及 Redstone Software Inc. 的 Eggplant。但是,很多组织都不使用这些工具。为什么不测试 UI?通常有三个原因:代码组织混乱 —— 服务器端应用程序具有良好的分层,例如持久性和业务逻辑,但是桌面应用程序通常需要考虑各种错综复杂的因素。UI 更改 —— UI 的功能经常因为用户需求的改变而改变其目标。即使是最优秀的 UI 测试工具要跟上这种不固定的 UI 的变化都可能有困难。市场上常见的 UI 测试解决方案都不符合待测试 UI 逻辑的级别。是否要在 HTTP 级别测试整个 Web 应用程序?用它作为惟一公开的访问点测试所有应用程序逻辑会有一定困难。同样地,使用 UI 来测试业务逻辑,就客户机/服务器而言也非常费劲。受损代码是错误代码身为一名软件开发人员,长期以来接受的教导就是利用关注点分离很有好处。紧密耦合将导致代码不可重用,难于测试,并且不易维护。有趣的是,在开发 UI 时,所有这些教训通常都被抛到九霄云外。下面的示例就是印证这句话的最好证据。从 下载 部分中下载项目。从菜单中选择 File > Import,将其导入工作区。在对话框中,选择 Existing Projects Into Workspace。在下一个屏幕中选择归档文件选项,然后浏览以选择刚下载的压缩文件。单击 Finish 将该压缩文件导入后,工作区内现在应当有了一个 databinding-tutorial2 项目。在 MangledConcernsExample 上单击鼠标右键,然后从弹出式菜单中选择 Run As > SWT Application。将会看到一个类似图 1 所示的窗口。它提供了一个简单的启用规则用于尝试同时启用 Name、Spouse 和 Years Married 字段。如果在 Name 字段和 Spouse 字段中填入值,则 Years Married 字段将变为启用状态。删除 Name 或 Spouse 任意一个字段中的值都会导致系统清空 Years Married 字段并将其变为禁用状态。清单 1 中显示了启用此功能的代码。图 1. UI 示例