Board logo

标题: 将 ActiveX 控件集成到 SWT 应用程序(1) [打印本页]

作者: look_w    时间: 2018-5-7 16:47     标题: 将 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 查看器应用程序,环境必须满足下列最低需求:      
虽然已经费心使 Ant 构建脚本可以跨平台使用,但是只在 Microsoft Windows XP 上测试和验证了 PDF 查看器应用程序。让我们从安装和设置样本应用程序开始吧。
安装和构建 PDF 查看器应用程序要安装和构建 PDF 查看器应用程序,请完成下列步骤:
如果您的环境满足需求并且配置正确,那么您应当会看到类似于下面这样的内容:
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   ...




让我们逐步研究这一代码片段:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0