利用java實現瀏覽器功能 jdic

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

  上面的例子代碼以下:
 html

/*
* 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程序中的願望了吧。 java

相關文章
相關標籤/搜索