2019独角兽企业重金招聘Python工程师标准>>>

使用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程序中的愿望了吧。

转载于:https://my.oschina.net/xiaominmin/blog/1828842

利用java实现浏览器功能 jdic相关推荐

  1. android封装浏览器,android利用WebView实现浏览器的封装

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 效 ...

  2. java实现浏览器_利用Java实现网页浏览器

    使用VC,VB或者C#的开发者们对于在程序里面嵌入一个网页来说,那真是小事一桩.但是在JAVA里面,却几乎是不可能实现的任务. JEditorPane虽然说可以打开网页,但是它那解析速度以及解析质量, ...

  3. java 实现网络通信_利用Java怎么样实现网络通信功能

    利用Java怎么样实现网络通信功能 发布时间:2020-11-20 15:19:04 来源:亿速云 阅读:72 作者:Leah 利用Java怎么样实现网络通信功能?相信很多没有经验的人对此束手无策,为 ...

  4. java 刷新界面_利用java如何实现在删除信息后刷新页面功能

    利用java如何实现在删除信息后刷新页面功能 发布时间:2020-11-17 14:25:49 来源:亿速云 阅读:74 作者:Leah 这篇文章给大家介绍利用java如何实现在删除信息后刷新页面功能 ...

  5. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  6. 在java里四舍五入怎么做_利用java怎么实现一个四舍五入功能

    利用java怎么实现一个四舍五入功能 发布时间:2020-12-02 16:46:08 来源:亿速云 阅读:68 作者:Leah 这期内容当中小编将会给大家带来有关利用java怎么实现一个四舍五入功能 ...

  7. java 提现,利用java实现提现金额到支付宝账户的功能,提现一万手续费多少

    利用java实现提现金额到支付宝账户的功能利用爪哇岛实现提现金额到支付宝账户的功能, 实现步骤具体如下: (学习视频分享:java教学视频) 1.导入依赖 属国 groupIdcom.alipay.s ...

  8. 利用java swing编写一个简易的计算器,实现了括号,优先级,三角函数,阶乘等功能

    利用java swing编写一个简易的计算器 背景 效果图 一.默认图 二.计算三角函数 三.阶乘运算 四.常见的四则运算(实现了优先级) 代码 本文借鉴了"初识Java,实现简易计算器(带 ...

  9. java运用到的单词_利用Java怎么实现一个单词提取功能

    利用Java怎么实现一个单词提取功能 发布时间:2020-12-08 17:07:00 来源:亿速云 阅读:65 作者:Leah 这篇文章给大家介绍利用Java怎么实现一个单词提取功能,内容非常详细, ...

最新文章

  1. vi profile
  2. Sentinel(三)之如何使用
  3. leetcode180. 连续出现的数字(SQL)
  4. 腾讯花85亿买岛;微信发原图或泄露位置信息?高通逼因特尔把Modem芯片业务卖给苹果?小米9官网正式下架……...
  5. Xamarin开发笔记—设备类第三方弹窗的使用和注意事项
  6. 【CCCC】L2-030 冰岛人 (25分) 模拟题,二叉树链式存储,从底部向上
  7. idea添加scala环境_Scala(一)——scala+Idea环境配置
  8. 致经典初选的60首备选篇目_致经典复选诵读题库:英诗选篇学前及小学段60首...
  9. jdk13新特性(jdk18新特性)
  10. 流畅的python是python3吗_流畅的 Python - 3. 文本与
  11. Appium 基础教程
  12. 你好2020,再见2019(年终总结)
  13. selenium模拟登录某宝
  14. 蓝桥杯2014省赛——猜年龄(Java)
  15. 记录学习Java HttpServletRequests报错The server encountered an internal error that prevented it from fulfil
  16. 史诗级梦境之二:沙漠大逃亡
  17. 外业调查工具助手,照片采集、精准定位、导航、地图查看
  18. 美好的人生,从良好的人际关系开始。
  19. wordpress博客搭建-保姆教程
  20. 3月第5周业务风控关注 | 央视曝光偷密码的“万能钥匙”,9亿人个人信息存风险

热门文章

  1. 多重搜索算法_Android多重搜寻,例如传送,搜寻联络人
  2. kotlin 运算符_Kotlin属性,数据类型,运算符
  3. kotlin半生对象_Kotlin单一对象,Kotlin伴侣对象
  4. MySQL索引的使用知识有哪些?
  5. LeetCode之3Sum Closest(Kotlin)
  6. RabbitMQ基础知识详解
  7. 改变图片局部透明度,实现透明度根据位置不而渐变
  8. 为什么别人一周搞定Linux,而你却做不到
  9. 高度自定义的TabBarController 两个TableView之间的联动
  10. 我的Linux笔记5--我要连网