弥补和 COM 的缝隙
2010-04-01 00:00:00 来源:WEB开发网生成代理之后,现在用户可以写 Java 应用程序来和 COM 服务器会话了。清单 2 展示了一个小的程序,它将启动 1-2-3,把一行写到一个单元格,复制那一行,等待一秒钟,然后不保存地关闭 1-2-3。这是个简单的示例,但是它说明了构建一个更复杂的程序所必需的每一件事。很多示例包括在 Bridge2Java 包中,和其它的一起,该包展示了如何捕获事件并在 Java 画布中描绘 COM 服务器。
列表 2. Quick123.java
// Description: This is a Bridge2Java Lotus 1-2-3 demo. This demo brings up
// 1-2-3, writes "This is a test" in the first cell,
// copies the first cell to the cell below it, waits 1 second,
// then quits.
//
// Setup: None
//
// Author: Bill Phillips
//
import Lot123.*;
public class Quick123
{
public static void main(java.lang.String[] args) {
Application app;
Ranges ranges;
Document doc;
Range rangeA1, rangeA2;
try
{
// Set up the com environment.
com.ibm.bridge2java.OleEnvironment.Initialize();
// Create a new document (which starts 123).
doc = new Document();
// Get the application object.
app = new Application(doc.get_Parent());
// Make the application visible.
app.set_Visible(new Boolean("true"));
// Open the Range workbook.
doc = new Document(app.NewDocument());
// Get all of the ranges.
ranges = new Ranges(doc.get_Ranges());
// Get cell A1.
rangeA1 = new Range(ranges.Item(new String("A1")) );
// Set the contents of cell A1
rangeA1.set_Contents("This is a test");
// Get cell A2.
rangeA2 = new Range(ranges.Item(new String("A2")) );
// Copy the contents of cell A1 into cell A2
rangeA1.QuickCopy(rangeA2);
// Wait one second
Thread.sleep(1000);
// Quit 123 without saving
app.Quit("false");
} catch (com.ibm.bridge2java.ComException e)
{
System.out.println( "COM Exception:" );
System.out.println( Long.toHexString((e.getHResult())) );
System.out.println( e.getMessage() );
} catch (Exception e)
{
System.out.println("message: " + e.getMessage());
} finally
{
app = null;
com.ibm.bridge2java.OleEnvironment.UnInitialize();
}
}
}
总结
COM 提供了一种体系结构,该体系结构允许在真实组件级别使用程序而不用关心它们的版本、写程序所用的语言甚至它们运行的位置。Java 平台提供了一个易于临时用户学习和使用的语言。Bridge2Java 跨越了复杂仍强大的 COM 世界和 Java 语言的简单性之间的鸿沟。
Bridge2Java 当前是 IBM alphaWorks 技术,这意味着可以下载并评估它,与开发小组分享您的想法。您也可以获取许可把它用到您自己的产品中。
更多精彩
赞助商链接