工作台定义扩展点来为使插件向平台添加用户界面功能。许多这些扩展点,特别是向导扩展,是通过使用 org.eclipse.jface.* 包中的类来实现的。有什么区别?
JFace 是一个用户界面工具箱,它提供很难实现的、用于开发用户界面功能部件的 helper 类。JFace 在原始的小窗口系统的级别之上运行。它提供用于处理常见的用户界面编程任务的类:
JFace 使您可以专注于实现特定插件的功能, 而不必花费精力来处理底层小窗口系统或者解决几乎在任何用户界面应用程序中都很常见的问题。
何处是 JFace 结束而工作台开始的位置?有时候界线并不是这样明显。通常,JFace API(来自于包 org.eclipse.jface.*)与工作台扩展点和 API 无关。可以想象,根本不必使用任何工作台代码就可以编写 JFace 程序。
工作台使用 JFace,但是又试图尽可能减少依赖项。例如,工作台部件模型 (IWorkbenchPart)被设计为独立于 JFace。我们很早就知道可以直接使用 SWT 小窗口来实现视图和编辑器,而不必使用任何 JFace 类。工作台尽可能保持“JFace 中立”,允许程序员使用他们觉得有用的 JFace 的部件。实际上,在工作台的大多数实现中都使用了 JFace, 并且在 API 定义中引用了 JFace 类型。(例如,IMenuManager、 IToolBarManager 和 IStatusLineManager 的 JFace 接口显示为工作台 IActionBar 方法中的类型。)
SWT 和 JFace 之间的界线是很明显的。SWT 根本不依赖于任何 JFace 或平台代码。许多 SWT 示例说明可以如何构建独立的应用程序。
JFace 用来在 SWT 库顶部提供常见的应用程序用户界面功能。JFace 并不试图“隐藏” SWT 或者替换它的功能。它提供一些类和接口,以处理与使用 SWT 来对动态用户界面编程相关联的许多常见任务。
通过考察查看器及它们与 SWT 小窗口之间的关系,就可以更清楚地了解 JFace 和 SWT 之间的关系。