利用java实现浏览器功能

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

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

  上面的例子代码如下:

/*
* Test1.java
*
* Created on 2007-10-2, 17:29:30
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package test2;

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

/**
*
* @author hadeslee
*/
public class Test1 extends JPanel implements ActionListener {

 private JTextField input;
 private JButton go;
 private IWebBrowser web;

 public Test1() {
  super(new BorderLayout());
  initWindow();
 }

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

 public void actionPerformed(ActionEvent ae) {
  doOpen();
 }

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

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

 private class MyListener extends WebBrowserListenerAdapter {

  private MyListener() {}

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

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

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

模拟浏览器的查找功能(Ctrl+F),同时兼容IE和Chrome

通常在做前端Web界面时,经常需要用js模拟浏览器的查找功能。下面介绍下IE和Chrome浏览器中如何用js模拟该功能。 一、IE浏览器 在IE浏览器中我们需要用到TextRange对象,该对象主要...
  • zheng12tian
  • zheng12tian
  • 2014年10月30日 11:36
  • 2370

java swing实现简单的图片浏览器

重新打开书,看到了一个图片浏览器的例子,编码运行,重新理解代码,直接贴代码 package awt; import java.awt.event.ActionEvent; import ja...
  • aaoxue
  • aaoxue
  • 2013年01月20日 21:27
  • 4033

调用浏览器下载图片 java实现

导论: JavaWeb下载文件一般分为两类,其中一类例如.txt,.excel,.zip等浏览器可以识别的文件类型,可以利用标签的链接实现,但是图片的下载确比较麻烦,当使用链接时,浏览器不识别图片的...
  • u013956444
  • u013956444
  • 2017年03月07日 15:04
  • 2287

java cms系统 spring mvc mybatis实现UC浏览器文章功能

实现UC浏览器文章功能
  • Taylor0418
  • Taylor0418
  • 2017年12月04日 11:16
  • 132

【java学习记录】13.实现简单的浏览器功能:获取源代码、保存源代码、获取图片

仿照IE浏览器,设计一简单的网站访问程序,实现如下功能: (1)具有类似IE的简单界面,使用者能输入URL地址,获得输入URL的HTML源代码; (2)将获得的HTML源代码保存到指定文件中。D:...
  • liupenw
  • liupenw
  • 2016年12月11日 18:35
  • 889

利用zclip插件实现跨浏览器复制到粘贴板功能,

  • 2015年12月29日 08:56
  • 11KB
  • 下载

一个简单的例子看明白如何利用window.location.hash实现ajax操作时浏览器的前进/后退功能

我们知道JavaScript中很早就提供了window.history对象,利用history对象的forward()、Go()、back()方法能够方便实现不同页面之间的前进、后退等这种导航功能。但...
  • Truong
  • Truong
  • 2017年06月09日 16:58
  • 295

一个简单的例子看明白如何利用window.location.hash实现ajax操作时浏览器的前进/后退功能

我们知道JavaScript中很早就提供了window.history对象,利用history对象的forward()、go()、back()方法能够方便实现不同页面之间的前进、后退等这种导航功能。但...
  • aitangyong
  • aitangyong
  • 2015年06月11日 14:24
  • 9755

JAVA 类 IE浏览器前进、后退等功能操作

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture();  ev...
  • waiting476
  • waiting476
  • 2012年10月24日 15:51
  • 4255

java cms系统 springmvc mybatis UC浏览器文章相关功能

最近公司在模拟UC浏览器做一个简单的cms系统,主要针对于企业内部的文章浏览需求,这边考虑用户大多用mobile浏览文章内容,故使用原生的ios和android进行开发,后面也会集成html5...
  • Taylor0418
  • Taylor0418
  • 2017年11月16日 10:27
  • 144
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用java实现浏览器功能
举报原因:
原因补充:

(最多只允许输入30个字)