将 ActiveX 控件集成到 SWT 应用程序(1)
- UID
- 1066743
|
将 ActiveX 控件集成到 SWT 应用程序(1)
多年以来,Java 语言已经“统治”了基于服务器的应用程序的开发领域。在该语言开发早期,人们将它吹捧为开发跨平台的桌面应用程序的解决方案。遗憾的是,事实上它从未符合过这种大肆宣传。在最终用户和开发人员社区需要抽象窗口工具箱(Abstract Window Toolkit,AWT)之外的一些其它功能之后,Sun Microsystems引入了 Java 基础类(Java Foundation Classes,JFC)(也称为 Swing)来诱使开发人员重新考虑将 Java 语言用于开发 GUI 应用程序。虽然 Swing 确实为开发客户机端的应用程序提供了一个成熟且经证实的模型,但它仍缺少本机应用程序的可视外观和操作。
在开发和引入标准窗口小部件工具箱(SWT)之前,业内权威人士和开发人员都宣告 Java 语言不适合开发桌面应用程序。SWT 通过为开发人员提供一个创建应用程序的框架(所创建的应用程序完全逼真地模仿本机应用程序),正开始给客户机端 Java 的时机带来新气象。与其前辈(例如 AWT 和 JFC)不同,SWT 给开发人员提供了一个与平台无关的 API,该 API 与操作系统的本机窗口环境紧密地集成在一起。虽然,传统上认为 Eclipse 项目是 Java 的开放源码集成开发环境(IDE),但是该项目涉及的范围更广。在 Eclipse 的网站首页上,将 Eclipse 描述成“……一种通用工具平台 — 只不过是一个开放的可扩展 IDE,并没什么特别之处。”
虽然在开发本文提供的样本应用程序期间使用了 Eclipse,但是我们将着重演示如何在独立应用程序的上下文中使用 ActiveX 控件。有关 Eclipse 项目的更多信息和背景知识,请参阅本文末尾的参考资料。
PDF 查看器应用程序在查看如何将 ActiveX 控件集成到 SWT 应用程序的代码和实现细节之前,让我们查看一下所包含的样本应用程序的用途和结构。该应用程序是一个简单的 PDF 查看器,它允许用户使用 Adobe 的 Acrobat Reader 控件来查看 PDF 文件并与之交互。用户可以在 SWT 应用程序中浏览其硬盘驱动器、定位文件和查看 PDF 文档,如 中所示。
图 1. 样本应用程序:在 Microsoft Windows XP 上运行的 PDF 查看器
环境需求可以使用 中的链接下载样本 PDF 查看器应用程序。要测试 PDF 查看器应用程序,环境必须满足下列最低需求:
- Microsoft Windows 操作系统
- 安装了 Java 2 SDK,标准版 1.4 或更高版本(请参阅 以获取下载链接)
- 安装了 Apache Ant 1.5.2 或更高版本(请参阅 以获取下载链接)
- 安装了 Adobe Acrobat Reader 5.0
虽然已经费心使 Ant 构建脚本可以跨平台使用,但是只在 Microsoft Windows XP 上测试和验证了 PDF 查看器应用程序。让我们从安装和设置样本应用程序开始吧。
安装和构建 PDF 查看器应用程序要安装和构建 PDF 查看器应用程序,请完成下列步骤:
- 使用 中的链接下载源代码软件包。
- 将 pdfviewer.zip 文件解压缩到临时目录中。
- 在新创建的目录中执行下面这个命令: ant clean 。
- 在新创建的目录中执行下面这个命令: ant 。
如果您的环境满足需求并且配置正确,那么您应当会看到类似于下面这样的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Buildfile: build.xml
init:
[mkdir] Created dir: D:\PDFViewer\dist
compile-common:
compile-module:
[echo] Compiling ...
[mkdir] Created dir: D:\PDFViewer\build
[mkdir] Created dir: D:\PDFViewer\build\classes
[javac] Compiling 5 source files to D:\PDFViewer\build\classes
package-common:
[jar] Building jar: D:\PDFViewer\dist\pdfviewer.jar
default:
BUILD SUCCESSFUL
|
使用 ActiveX 控件既然我们已经介绍了 PDF 查看器应用程序的基础知识,那就让我们研究一下如何在 SWT 应用程序中集成和使用 ActiveX 控件。因为我们这里的目的是讨论 ActiveX 集成,所以我们将不研究如何创建独立的 SWT 应用程序以及如何在 Microsoft Windows中使用 ActiveX 控件。有关如何在 Eclipse Workbench 之外使用 SWT 组件的更多信息和背景知识,请参阅 Adrian Van Emmenis 的由三部分所组成的文章系列,本文末尾的 这一节中突出显示了这些文章。
概述了 PDFViewer 类的基本结构并演示了如何将 ActiveX 控件集成到 SWT 应用程序。
清单 1. PDFViewer 类1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| 1 public class PDFViewer extendsApplicationWindow
2 {
3 private OleControlSite site;
4 private OleAutomation auto;
5
6 public PDFViewer()
7 {
8 super(null);
9 this.addMenuBar();
10 }
11
12 protected ControlcreateContents(Composite parent)
13 {
14 Shell shell = this.getShell();
15 shell.setText("PDFViewer");
16 shell.setSize(500, 450);
17
18 OleFrame frame = new OleFrame(shell, SWT.NONE);
19
20 try
21 {
22 site = new OleControlSite(frame,SWT.NONE, "PDF.PdfCtrl.5");
23 auto = new OleAutomation(site);
24
25 ...
|
让我们逐步研究这一代码片段:
- 每次应用程序启动时,都会创建 PDFViewer 类的新实例。
- 如第 3 行和第 4 行所示,我们需要定义两个对象: OleControlSite 和 OleAutomation 。 OleControlSite 对象变量处理与 ActiveX 控件的交互。 OleAutomation 对象允许开发人员访问特性并执行 ActiveX 控件所提供的命令。
- 在第 18 行上,定义了 OleFrame 对象。该对象是 ActiveX 控件的容器,并管理该控件的生命周期。
- 在第 22 行上,通过使用两个参数来实例化 site 变量:第一个参数包含对 OleFrame 的引用,第二个参数包含标识 ActiveX 控件的字符串。程序标识符(可在 Windows 注册表中找到)在 Microsoft Windows 中唯一地标识该控件。
- 在第 23 行上,使用对 OleControlSite 变量的引用来实例化 site 变量。
|
|
|
|
|
|