JAVA网页浏览器

使用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程序了。

上面的例子代码如下:

  1. /* 
  2.  * Test1.java 
  3.  * 
  4.  * Created on 2007-10-2, 17:29:30 
  5.  * 
  6.  * To change this template, choose Tools | Templates 
  7.  * and open the template in the editor. 
  8.  */  
  9.   
  10. package test2;  
  11.   
  12. import java.awt.BorderLayout;  
  13. import java.awt.event.ActionEvent;  
  14. import java.awt.event.ActionListener;  
  15. import java.net.MalformedURLException;  
  16. import java.net.URL;  
  17. import java.util.logging.Level;  
  18. import java.util.logging.Logger;  
  19. import javax.swing.JButton;  
  20. import javax.swing.JFrame;  
  21. import javax.swing.JPanel;  
  22. import javax.swing.JTextField;  
  23. import org.jdesktop.jdic.browser.IWebBrowser;  
  24. import org.jdesktop.jdic.browser.WebBrowser;  
  25. import org.jdesktop.jdic.browser.WebBrowserEvent;  
  26. import org.jdesktop.jdic.browser.WebBrowserListenerAdapter;  
  27.   
  28. /** 
  29.  * 
  30.  * @author hadeslee 
  31.  */  
  32. public class Test1 extends JPanel implements ActionListener {  
  33.   
  34.     private JTextField input;  
  35.     private JButton go;  
  36.     private IWebBrowser web;  
  37.   
  38.     public Test1() {  
  39.         super(new BorderLayout());  
  40.         initWindow();  
  41.     }  
  42.   
  43.     private void initWindow() {  
  44.         try {  
  45.             web = new WebBrowser();  
  46.             web.addWebBrowserListener(new MyListener());  
  47.             go = new JButton("转到");  
  48.             input = new JTextField();  
  49.             JPanel up = new JPanel(new BorderLayout());  
  50.             up.add(input, BorderLayout.CENTER);  
  51.             up.add(go, BorderLayout.EAST);  
  52.             this.add(up, BorderLayout.NORTH);  
  53.             this.add(web.asComponent(), BorderLayout.CENTER);  
  54.             input.addActionListener(this);  
  55.             go.addActionListener(this);  
  56.         } catch (Exception ex) {  
  57.             Logger.getLogger(Test1.class.getName()).log(Level.SEVERE, null, ex);  
  58.         }  
  59.         JFrame jf = new JFrame("JAVA浏览器");  
  60.         jf.add(this, BorderLayout.CENTER);  
  61.         jf.setSize(500300);  
  62.         jf.setLocationRelativeTo(null);  
  63.         jf.setVisible(true);  
  64.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  65.     }  
  66.   
  67.     public void actionPerformed(ActionEvent ae) {  
  68.         doOpen();  
  69.     }  
  70.   
  71.     private void doOpen() {  
  72.         try {  
  73.             String text = input.getText();  
  74.             if (text == null || text.equals("")) {  
  75.                 return;  
  76.             }  
  77.             if (!text.toLowerCase().startsWith("http://")) {  
  78.                 text = "http://" + text;  
  79.             }  
  80.             web.setURL(new URL(text));  
  81.         } catch (MalformedURLException ex) {  
  82.             Logger.getLogger(Test1.class.getName()).log(Level.SEVERE, null, ex);  
  83.         }  
  84.     }  
  85.   
  86.     public static void main(String[] args) {  
  87.         new Test1();  
  88.     }  
  89.   
  90.     private class MyListener extends WebBrowserListenerAdapter {  
  91.   
  92.         private MyListener() {  
  93.         }  
  94.   
  95.         @Override  
  96.         public void documentCompleted(WebBrowserEvent arg0) {  
  97.             System.out.println("文档下载完。。。");  
  98.             web.executeScript("alert('文档下载完毕!')");  
  99. //            web.setContent("<html><H1>Hello world!!<H1>" +  
  100. //                    "<a href=http://www.google.cn>点我</a></html>");  
  101. //            web.removeWebBrowserListener(this);  
  102.         }  
  103.     }  
  104. }  

它比一般的别的实现好的地方就是,它可以很完全地和JAVA代码进行交互,包括浏览器事件的监听,浏览器内容的获取,以及自己调用浏览器来执行一段javasript,这些都是很强大并且很实用的功能。
怎么样,这下满足了一下我们把网页嵌入到JAVA程序中的愿望了吧。

注:还可以用SWT实现Java版的Web浏览器

转载自:http://www.blogjava.net/hadeslee/archive/2007/10/03/150197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值