科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何利用JDIC与桌面交互操作

如何利用JDIC与桌面交互操作

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Jdesktop集成组件(JDesktop Integration Components,JDIC)弥合了Java开发独立于平台的世界与用户桌面的真实世界之间存在的鸿沟。

作者:builder.com.cn 2007年1月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

出于简化的考虑,在这个示例代码里,嵌入的浏览器代码在BrowserFrame.java里被隔离开。现在我们就看一下创建浏览器的过程;

BrowserEngineManager bem = BrowserEngineManager.instance();

BrowserEngineManager被作为BrowserEngine实例的工厂。目前市面上有3个引擎,IE、MOZILLA和WEBKIT,其中Internet Explorer是Windows平台上的,Mozilla(不是Firefox)是Windows、Linux和Solaris平台上的,而WEBKIT用于Mac OSX平台。BrowserEngineManager的工作原理是根据默认的浏览器设置来设定应该是什么浏览器。这里的一个小问题是,如果在Windows上默认的浏览器是Firefox,那么原先的默认机制就会不起作用。我们通过检查“活动引擎(Active Engine)”来解决这个问题,如果它是空,那么就要试着强制JDIC使用Internet Explorer。

if(bem.getActiveEngine()==null) bem.setActiveEngine(BrowserEngineManager.IE);

现在我们要活动的BrowserEngine为我们提供一个IwebBrowser实例。

IWebBrowser webBrowser = bem.getActiveEngine().getWebBrowser();

这个IwebBrowser不是我们真正的图形用户界面(GUI)组件。要把它加到用户界面(UI)里,我们需要从它获得GUI;

panel.add(webBrowser.asComponent());

当你让所包含的面板出现时,你会看到一大块空白的区域。我们需要告诉它显示什么;

webBrowser.setURL(new URL("http://uk.builder.com/"));

在示例代码中,我们在屏幕的底部加了一个状态标签、一个主页按钮、一个用于输入URL的文本字段,以及一个停止按钮。我们通过向WebBrowser添加一个WebBrowserListener来更新状态标签;有一个WebBrowserListenerAdapter可以让我们的工作更简单一些,我们可以用它来保存必须在WebBrowserListener里实现的每个方法;

webBrowser.addWebBrowserListener(new WebBrowserListenerAdapter() {
	public void statusTextChange(WebBrowserEvent webBrowserEvent) {
		if(webBrowserEvent.getData()==null) {
			statuslabel.setText("Status:");
		} else {
			statuslabel.setText("Status:"+webBrowserEvent.getData());
		}
	}
});
 

我们捕捉statusTextChange事件并通过查询其getData()方法来检查与WebBrowserEvent相关的字符串信息。如果它为空,我们就设置一个空状态标签;否则,我们就把可供人直接阅读的消息直接复制到状态标签上。使用WebBrowser侦听程序,我们就有可能捕捉到状态文本、标题文本、下载进程、页面显示的完成,以及浏览器组件的启动和关闭等变化。实现停止按钮甚至更简单;

stopbutton.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		webBrowser.stop();
	}
});
 

我们只需要对webBrowser调用stop()方法就行了。类似的,back()、forward()和refresh()等方法都可以模拟经典的浏览器按钮,isBackEnabled()和isForwardEnabled()可以用来测试前两个方法是否能用。

以上就是从源代码的角度看在应用程序中嵌入浏览器所需要做的事情。JDIC在Windows、Linux和Solaris上工作的非常好;对MacOSX的支持则是相当新的。正如先前指出的,它的最大的问题是缺乏对Firefox的支持,而Firefox正在扩大其在浏览器市场上的占有率。但是重要的是,你需要在每个平台上都进行测试,支持每个平台上的所有浏览器。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章