本文是本系列的第三篇也是最后一篇文章,在本文中,A. O. Van Emmenis 将通过添加操作、菜单栏、弹出菜单和工具栏完成在第 1 和第 2 部分中着手讨论的文件资源管理器示例。他将演示如何设置菜单项特性,如何重用菜单和工具栏中的操作,以及如何通过侦听来自查看器的事件使操作识别上下文。示例操作使用实用程序来启动程序和访问系统剪贴板。
本系列的 第 1 部分着手讨论一个示例,该示例将 JFace 应用程序窗口子类化并使用树查看器和表查看器来显示文件夹和文件。在 第 2 部分中,我们做了些完善工作并使用 JFace 图像注册表添加了一些图标。
这次,我们将研究操作,您可以在菜单和工具栏中使用它们。我们将看到如何使用 Program类启动程序,及如何使用 Clipboard类访问系统剪贴板。我们已经使用了图标在查看器中显示文件和文件夹。我们将看到如何在菜单和工具栏中也使用它们。最后,我们将使操作侦听来自查看器的事件以使其对上下文敏感。
如果要下载本文中 示例的代码,请注意我的系统设置:
- Windows 2000
- Eclipse,稳定构建版 M3(2002 年 11 月 15 日)
- Eclipse 安装在 C:/eclipse-2.1.0 中
请您自行完成随后所有调整名称和文件分隔符的工作,以便程序能在您的系统上正确地运行。
请确保以下 jar 文件位于类路径上:
C:/eclipse-2.1.0/plugins/org.eclipse.jface_2.1.0/jface.jar
C:/eclipse-2.1.0/plugins/org.eclipse.runtime_2.1.0/runtime.jar
C:/eclipse-2.1.0/plugins/org.eclipse.swt.win32_2.1.0/ws/win32/swt.jar
C:/eclipse-2.1.0/plugins/org.eclipse.ui.workbench_2.1.0/workbench.jar
C:/eclipse-2.1.0/plugins/org.eclipse.core.runtime_2.1.0/runtime.jar
为确保 Java VM 能找到您在运行时所用 GUI 的正确共享库,请使用以下参数运行 Java VM:
-Djava.library.path=C:/eclipse-2.1.0/plugins/org.eclipse.swt.win32_2.1.0/os/win32/x86/
最后,请从包含 icons 文件夹的文件夹中运行这些程序,以便示例能找到包含图标的 gif 文件。
|
上一篇文章结束时,我们的资源管理器应用程序如图 1 所示。
我们在左边窗格中使用树查看器显示文件夹和文件。当在左边窗格中选中某个文件夹时,它所包含的文件就显示在右边窗格的表查看器中。我们对右边窗格中的各项排序以便首先出现的是文件夹。我们在两个查看器中都使用图标来表示文件和文件夹。
让我们给窗口添加一个简单的菜单栏。
|
JFace MenuManager简化了 SWT 菜单的创建和更新。菜单管理器可包含菜单项、其它菜单管理器(用于子菜单)和分隔符。一旦创建了菜单管理器,就可以用菜单栏、上下文菜单(也就是弹出菜单)或工具栏下拉菜单表示它。
同查看器一样,尽管通常不需要访问 SWT 菜单本身,但菜单管理器是助手对象而不是包装器对象。在讨论菜单之前,首先看看菜单管理器能包含什么。
给菜单管理器添加操作。实际上,也可以给按钮和工具栏添加操作。其方法是:将 Action 子类化,设置希望在菜单/工具栏/按钮中出现的文本,然后实现 run()
方法以使其做您想做的事情。
让我们先看一下清单 1 中显示的示例 ExitAction:
清单 1. ExitAction(V1)import org.eclipse.jface.action.*; import org.eclipse.jface.window.*; public class ExitAction extends Action { ApplicationWindow window; public ExitAction(ApplicationWindow w) { window = w; setText("E&xit"); } public void run() { window.close(); } } |
一切都相当简单。Exit 中 x前的 &字符表明 x是该菜单项的 键盘导航键(助记符)。注:这不同于 加速键(热键)。很快就会看到这些……
|