<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    千里冰封
    JAVA 濃香四溢
    posts - 151,comments - 2801,trackbacks - 0
    使用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(
    500300);
            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的濃香.
    posted on 2007-10-03 08:55 千里冰封 閱讀(13703) 評論(15)  編輯  收藏 所屬分類: JAVA開源

    FeedBack:
    # re: JAVA網頁瀏覽器
    2007-10-03 10:16 | 翔南
    這個組件真的很NICE!!
    能不能再詳細介紹點訪問桌面組件的相關內容捏!!~~
    嘿嘿 謝謝哈  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-03 10:27 | 千里冰封
    以后我會再介紹一些很實用,但是JAVA沒有實現的功能  回復  更多評論
      
    # re: JAVA網頁瀏覽器[未登錄]
    2007-10-03 10:49 | 咖啡
    用過eclipse吧。在例子里面有用swt編的一個瀏覽器。  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-03 14:59 | Unmi
    用過eclipse就知道swt中可以嵌入IE或NetScape內核瀏覽網頁,可以把這部分組件他離出來用的  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-03 15:37 | 千里冰封
    但是SWT的太過于龐大了,SWING才是GUI開發首用的  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-04 09:29 | Matthew Chen
    @千里冰封
    其實無論jdic,還是java6里采用的方式,抑或swt,本質都是jni的方式去解決這一問題,然后跨平臺實現了。比起swt,swing才是真正的龐大,當然這也體現了它功能的強大以及速度的相對延遲,說道gui開發的首選,如果項目設計了和本地操作系統相關的,就好比這個瀏覽器,完全可以用swt了,畢竟它多少還是有跨平臺支持的。  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-04 11:06 | BeanSoft
    我在 RedHat 9 中文下試 SWT 的 Browser 控件失敗, 各位有何良策啊? 好像要額外裝一個 Mozilla 的調試包. 本來想做 Code Manager .SWT Linux 版本的, 這下完蛋了. 也許別的系統能用.

    http://html.xamjwg.org/java-browser.jsp 這有個純 Java 的瀏覽器, 厲害啊, 開源的.
    Lobo (previously known as Warrior) is an open source web browser that is written completely in Java. It is undergoing active development with the aim to fully support HTML 4, Javascript and CSS2.

    下載試了一下, 還行, 沒深入. 純 Java 的如果想定制就容易多了.  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-04 11:39 | 千里冰封
    相對SWING來說,SWT的跨平臺就說得有些牽強了些,并且如果用SWING寫應用的話,程序發布的時候是不需要附帶任何第三方JAR的,可是用SWT不但要帶JAR還要帶DLL一起發布,呵呵,最好還是用標準的SWING的實現,畢竟它是標準API的一部份,并且性能的提升也是有目共睹的。:)  回復  更多評論
      
    # re: JAVA網頁瀏覽器[未登錄]
    2007-10-04 19:07 | NeedJava
    比較同意樓主千里冰封的觀點,如果純粹要速度的話,我只會用C/C++而不會用SWT的。

      回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2007-10-08 15:15 | origo
    我覺得多一個dll是不是與跨平臺相背離了  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2008-01-14 16:35 | cooc
    為什么我的JDIC包里沒

    import org.jdesktop.jdic.browser.IWebBrowser;

    這個類呢

      回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2008-02-29 16:12 | gembin
    Eclipse RCP 不錯!  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2008-05-15 21:42 |
    @cooc
    我的jdic怎么也沒有org.jdesktop.jdic.browser.IWebBrowser呢  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    2008-08-02 10:39 | cozl
    怎么https://jdic.dev.java.net/這個網頁打不開啊,好像沒有證書什么的  回復  更多評論
      
    # re: JAVA網頁瀏覽器
    主站蜘蛛池模板: 67pao强力打造高清免费| 国产99精品一区二区三区免费 | 亚洲视频中文字幕| a级毛片免费在线观看| 亚洲欧洲日产国码无码网站| 一级毛片不卡免费看老司机| 亚洲男人的天堂一区二区| a一级爱做片免费| 国产精一品亚洲二区在线播放| 免费一级做a爰片久久毛片潮喷| 亚洲国产精品无码第一区二区三区| 成年男女免费视频网站| 亚洲人成人无码网www电影首页 | 亚洲第一极品精品无码久久| 国产性生大片免费观看性| 久久精品国产亚洲AV果冻传媒| 色婷婷六月亚洲综合香蕉| 免费人成在线观看网站品爱网日本| 免费无码专区毛片高潮喷水 | 亚洲成AV人片在WWW色猫咪| 午夜精品射精入后重之免费观看 | 一二三四免费观看在线电影| 亚洲av成人中文无码专区| 亚洲成a人无码av波多野按摩| 中文字幕不卡免费高清视频| 久久精品亚洲精品国产色婷| 免费观看无遮挡www的小视频| 久久精品国产亚洲AV| 亚洲精品乱码久久久久久中文字幕 | 在线永久免费观看黄网站| 丝袜足液精子免费视频| 亚洲第一页在线播放| 国产精品自在自线免费观看| 中文字幕成人免费高清在线视频| 亚洲图片一区二区| 国产成人高清精品免费软件| 国产一级高青免费| 亚洲欧洲日韩国产一区二区三区| 亚洲精品偷拍视频免费观看| 精品国产污污免费网站aⅴ| 黄色a级免费网站|