现在的位置: 首页 > 综合 > 正文

使用JDIC与本机桌面程序交互

2013年04月02日 ⁄ 综合 ⁄ 共 1973字 ⁄ 字号 评论关闭
导读:

  Java在WEB上大放异彩,但在桌面程序开发上可以说逊色太多了。Swing默认的样式难看,速度又慢,而且为了兼容各操作系统,Java很难保证方便地与一些系统专有的程序进行交互,比如Windows中的IE等,而.NET Framework则有很方便的工具可供使用。

  对本机程序进行封装,这也是现在软件开发的一大思路,比如傲游(Maxthon)浏览器(原名MyIE2),就是基于IE进行开发的,加了很多功能,现在非常流行。

  可以想像,如果用Java实现一个Maxthon,难度是相当大的。

  但JDIC的出现,使Java与本机桌面程序交互变得容易了不少。JDesktop Integration Components (JDIC)的目的是构建消除本机应用程序和 Java 等价物之间差距的组件。JDIC 目前提供了本机 Web 浏览器(Internet Explorer 或 Mozilla) 支持、系统托盘支持、文件扩展集成和其他桌面特性。相信JDIC将来在Java桌面开发上会越来越受欢迎。

  https://jdic.dev.java.net/

  http://www.ibm.com/developerworks/cn/java/j-jdic/

  http://community.java.net/javadesktop/

  下面以一个基于IE浏览器的小程序来介绍一下JDIC的使用。

  程序的需求: 复制一段文字内容到IE浏览器打的网页中的某些表单,即实现自动填写表单的功能。比如我们登录phpeye.com,自动填写用户登录表单。

  这个功能也是现在很多浏览器本身就支持的,比如Firefox,就会记录,然后自动完成。当然我们使用程序控制更为强大,易于扩展。这是个简单的功能,但对于某些行业,经常需要在网页上填写大量表单,就非常有用,可以节省大量时间,特别是如果填写的数据也用程序来读取的话:)

  解决思路:使用程序打开一个IE窗口,并在窗口中执行一段JavaScript代码,设置表单的值。

  使用JDIC,即其中的org.jdesktop.jdic.browser这个package,使用executeScript()方法即可以在当前窗口打开的HTML中执行JavaScript。这里基于jdic.browser的Demo做些简单的改写,就可以满足我们的需求。

  首先在浏览器上增加一个“自动完成”按钮,并给该按钮加上事件处理函数。

  import org.jdesktop.jdic.browser.*;

  webBrowser = new WebBrowser(new URL("http://www.phpeye.com"));

  JButton jCompleteButton = new JButton("自动填写",

  new ImageIcon(getClass().getResource("images/AC.png")));

  jCompleteButton.addActionListener(new Browser_jCompleteButton_actionAdapter(this));

  class Browser_jCompleteButton_actionAdapter implements java.awt.event.ActionListener {

  Browser adaptee;

  Browser_jCompleteButton_actionAdapter(Browser adaptee) {

  this.adaptee = adaptee;

  }

  public void actionPerformed(ActionEvent e) {

  adaptee.jCompleteButton_actionPerformed(e);

  }

  }

  void jCompleteButton_actionPerformed(ActionEvent e) {

  webBrowser.executeScript("document.getElementById('uname').value='haohappy';document.getElementById('pwd').value='123456';");

  }

  上面红色那行就是利用JS来设置表单的内容。

  最后结果:

  

  

  可以在当前页面中执行JavaScript,我们就可以对HTML进行各种各样的操作,实现各种功能。

  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1758435

本文转自

http://blog.csdn.net/Haohappy2004/archive/2007/08/25/1758435.aspx

抱歉!评论已关闭.