linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > JAVA >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Ajax实现在textbox中模糊查询显
·Ajax实现分页查询
·java定时执行的三种方法
·读取数码照片中的Exif信息
·基于Spring+Hibernate+Eclip
·JAVA反编译工具jad的简单用法
·Java编程基础
·Java调用Oracle的过程和函数
·JSP获取客户端的浏览器和操作系
·java.lang包概述
·Java中利用通讯API编写短信软件
·利用Java实现网页浏览器
·Java文件操作大全
·JAVA技术:上传图片的缩放处理
·基于JSF和DAO模式的大型设备采
最新文章
·实例解析:Linux操作系统下Jav
·JAVA得到网卡物理地址(Windows
·Ajax实现在textbox中模糊查询显
·Ajax简单示例之改变下拉框动态
·AJAX如何与后台交互
·Ajax实现分页查询
·Ajax核心:XMLHTTP组件相关技术
·面向Java程序员的Ajax:构建动态
·JSP获取客户端的浏览器和操作系
·提高Java技能的几种简单有效的
·敏捷开发中需掌握移除重复代码
·Java中利用通讯API编写短信软件
·关于String和StringBuffer
·用Java得到硬盘空间
·如何优化JAVA程序设计和编码,
Google
 
利用Java实现网页浏览器
[ 作者:  加入时间:2007-10-25 13:33:52  来自:Linux联盟收集整理 ]

使用VC,VB或者C#的开发者们对于在程序里面嵌入一个网页来说,那真是小事一桩。但是在Java里面,却几乎是不可能实现的任务。JEditorPane虽然说可以打开网页,但是它那解析速度以及解析质量,对于今天日益复杂的网页内容来说,就像没有一样。今天我们就使用一个开源的组件(jdic)来实现在Java程序里面嵌入网页的效率。

下面言归正转吧!我们来介绍一下这个开源的组件,它的名字叫JDIC(JDesktop Integration Components),网址为:https://jdic.dev.java.net/,它提供了一种访问桌面组件的API,其中JDK 6.0就采纳了其中的一些,比如系统栏图标的SystemTray和SystemIcon,还有代表桌面的Desktop等等,可见这个API是挺不错的。由于网页浏览器的特殊性,标准的JDK并没有把它加入进来,但是我们一样可以下载它来使用这个功能。明显地,这个功能是用本地方法实现的,所以下载完以后,把jdic.dll放到我们的path目录中,比如system32文件夹下面,然后我们就可以使用它的功能从而增加我们的Java程序了。

上面的例子代码如下:

/*vmcLinux联盟
* Test1.javavmcLinux联盟
*vmcLinux联盟
* Created on 2007-10-2, 17:29:30vmcLinux联盟
*vmcLinux联盟
* To change this template, choose Tools | TemplatesvmcLinux联盟
* and open the template in the editor.vmcLinux联盟
*/

package test2;

import java.awt.BorderLayout;vmcLinux联盟
import java.awt.event.ActionEvent;vmcLinux联盟
import java.awt.event.ActionListener;vmcLinux联盟
import java.net.MalformedURLException;vmcLinux联盟
import java.net.URL;vmcLinux联盟
import java.util.logging.Level;vmcLinux联盟
import java.util.logging.Logger;vmcLinux联盟
import javax.swing.JButton;vmcLinux联盟
import javax.swing.JFrame;vmcLinux联盟
import javax.swing.JPanel;vmcLinux联盟
import javax.swing.JTextField;vmcLinux联盟
import org.jdesktop.jdic.browser.IWebBrowser;vmcLinux联盟
import org.jdesktop.jdic.browser.WebBrowser;vmcLinux联盟
import org.jdesktop.jdic.browser.WebBrowserEvent;vmcLinux联盟
import org.jdesktop.jdic.browser.WebBrowserListenerAdapter;

/**vmcLinux联盟
*vmcLinux联盟
* @author hadesleevmcLinux联盟
*/vmcLinux联盟
public class Test1 extends JPanel implements ActionListener {

 private JTextField input;vmcLinux联盟
 private JButton go;vmcLinux联盟
 private IWebBrowser web;

 public Test1() {vmcLinux联盟
super(new BorderLayout());vmcLinux联盟
initWindow();vmcLinux联盟
 }

 private void initWindow() {vmcLinux联盟
try {vmcLinux联盟
 web = new WebBrowser();vmcLinux联盟
 web.addWebBrowserListener(new MyListener());vmcLinux联盟
 go = new JButton("转到");vmcLinux联盟
 input = new JTextField();vmcLinux联盟
 JPanel up = new JPanel(new BorderLayout());vmcLinux联盟
 up.add(input, BorderLayout.CENTER);vmcLinux联盟
 up.add(go, BorderLayout.EAST);vmcLinux联盟
 this.add(up, BorderLayout.NORTH);vmcLinux联盟
 this.add(web.asComponent(), BorderLayout.CENTER);vmcLinux联盟
 input.addActionListener(this);vmcLinux联盟
 go.addActionListener(this);vmcLinux联盟
} catch (Exception ex) {vmcLinux联盟
 Logger.getLogger(Test1.class.getName()).log(Level.SEVERE, null, ex);vmcLinux联盟
}vmcLinux联盟
JFrame jf = new JFrame("JAVA浏览器");vmcLinux联盟
jf.add(this, BorderLayout.CENTER);vmcLinux联盟
jf.setSize(500, 300);vmcLinux联盟
jf.setLocationRelativeTo(null);vmcLinux联盟
jf.setVisible(true);vmcLinux联盟
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);vmcLinux联盟
 }

 public void actionPerformed(ActionEvent ae) {vmcLinux联盟
doOpen();vmcLinux联盟
 }

 private void doOpen() {vmcLinux联盟
try {vmcLinux联盟
 String text = input.getText();vmcLinux联盟
 if (text == null || text.equals("")) {vmcLinux联盟
return;vmcLinux联盟
 }vmcLinux联盟
 if (!text.toLowerCase().startsWith("http://")) {vmcLinux联盟
text = "http://" + text;vmcLinux联盟
 }vmcLinux联盟
 web.setURL(new URL(text));vmcLinux联盟
} catch (MalformedURLException ex) {vmcLinux联盟
 Logger.getLogger(Test1.class.getName()).log(Level.SEVERE, null, ex);vmcLinux联盟
}vmcLinux联盟
 }

 public static void main(String[] args) {vmcLinux联盟
new Test1();vmcLinux联盟
 }

 private class MyListener extends WebBrowserListenerAdapter {

private MyListener() {}

@OverridevmcLinux联盟
public void documentCompleted(WebBrowserEvent arg0) {vmcLinux联盟
 System.out.println("文档下载完。。。");vmcLinux联盟
 web.executeScript("alert('文档下载完毕!')");vmcLinux联盟
 // web.setContent("<html><H1>Hello world!!<H1>" +vmcLinux联盟
 // "<a href=http://www.google.cn>点我</a></html>");vmcLinux联盟
 // web.removeWebBrowserListener(this);vmcLinux联盟
}vmcLinux联盟
 }vmcLinux联盟
}

它比一般的别的实现好的地方就是,它可以很完全地和JAVA代码进行交互,包括浏览器事件的监听,浏览器内容的获取,以及自己调用浏览器来执行一段javasript,这些都是很强大并且很实用的功能。

怎么样,这下满足了一下我们把网页嵌入到JAVA程序中的愿望了吧!

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息