Java 網(wǎng)頁瀏覽器組件介紹(全的4種)
《Java 網(wǎng)頁瀏覽器組件介紹(全的4種)》由會員分享,可在線閱讀,更多相關(guān)《Java 網(wǎng)頁瀏覽器組件介紹(全的4種)(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、前言 在使用 Java 開發(fā)客戶端程序時,有時會需要在界面中使用網(wǎng)頁瀏覽器組件,用來顯示一段 HTML 或者一個特定的網(wǎng)址。本文將介紹在界面中使用瀏覽器組件的四種方法,給出示例的代碼,并且分析每種方法的優(yōu)點與不足,便于 Java 開發(fā)者在實際開發(fā)過程中根據(jù)自己的需要來選擇。 回頁首 JDK 中的實現(xiàn) - JEditorPane Swing 是一個用于開發(fā) Java 應(yīng)用程序圖形化用戶界面的工具包,它是以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風格,而且它是輕量級(light-weight)組件,沒有本地代碼,不依賴于操作系統(tǒng)的支持,這是它與 AWT 組件的
2、最大的區(qū)別。 在 Swing 中,有一個組件是 JEditorPane,它是一個可以編輯任意內(nèi)容的文本組件。這個類使用了 EditorKit 來實現(xiàn)其操作,對于給予它的各種內(nèi)容,它能有效地將其類型變換為適當?shù)奈谋揪庉嬈鞣N類。該編輯器在任意給定時間的內(nèi)容類型由當前已經(jīng)安裝的 EditorKit 來確定。 默認情況下,JEditorPane 支持以下的內(nèi)容類型: · text/plain 純文本的內(nèi)容,在此情況下使用的工具包是 DefaultEditorKit 的擴展,可生成有換行的純文本視圖。 · text/html HTML 文本,在此情況下使用的工具包是 javax.swing.
3、text.html.HTMLEditorKit,它支持 HTML3.2。 · text/rtf RTF 文本,在此情況下使用的工具包是類 javax.swing.text.rtf.RTFEditorKit,它提供了對多樣化文本格式(Rich Text Format)的有限支持。 JEditorPane 的常用方法 JEditorPane() 創(chuàng)建一個新的 JEditorPane 對象 JEditorPane(String url) 根據(jù)包含 URL 規(guī)范的字符串創(chuàng)建一個 JEditorPane JEditorPane(String type,String text) 創(chuàng)建一個
4、已初始化為給定文件的 JEdiorPane JEditorPane(URL initialPage) 根據(jù)輸入指定的 URL 來創(chuàng)建一個 JEditorPane scrollToReference(String reference) 將視圖滾動到給定的參考位置(也就是正在顯示的 URL 的 URL.getRef 方法所返回的值) setContentType(String type) 設(shè)置此編輯器所處理的內(nèi)容類型 setEditorKit(EditorKit kit) 設(shè)置當前為處理內(nèi)容而安裝的工具包 setPage(String url) 設(shè)置當前要顯示的 URL, 參數(shù)
5、是一個 String setPage(URL page) 設(shè)置當前要顯示的 URL, 參數(shù)是一個 .URL 對象 setText(String t) 將此 TextComponent 的文本設(shè)置為指定內(nèi)容,預期以此編輯器的內(nèi)容類型格式提供該內(nèi)容 JEditorPane 顯示網(wǎng)頁 要使用 JEditorPane 來顯示 HTML,需要完成以下幾個步驟: · 創(chuàng)建一個 JEditorPane 對象 private JEditorPane jep=new JEditorPane(); · 設(shè)置 JEditorPane 顯示的內(nèi)容為 text/html jep.setCo
6、ntentType("text/html"); · 設(shè)置它不可編輯 jep.setEditable(false); · 處理超鏈接事件 jep.addHyperlinkListener(this); JEditorPane 需要注冊一個 HyperlinkListener 對象來處理超鏈接事件,這個接口定義了一個方法 hyperlinkUpdate(HyperlinkEvent e),示例代碼如下: public void hyperlinkUpdate(HyperlinkEvent event) { if(event.getEvent
7、Type() == HyperlinkEvent.EventType.ACTIVATED) { try { jep.setPage(event.getURL()); } catch(IOException ioe) { ioe.printStackTrace(); } } } 完整的代碼可以在本文中 下載 到。在這個例子中,實現(xiàn)了一個 HyperlinkListene
8、r 接口,在方法實現(xiàn)中, if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED) 這行代碼表示首先判斷 HyperlinkListener 的類型,在這里只處理事件類型為 HyperlinkEvent.EventType.ACTIVATED 的事件(即點擊了某個超鏈接的事件),然后通過調(diào)用 HyperlinkEvent 的 getURL() 方法來獲取超鏈接的 URL 地址。 最后通過調(diào)用 jep.setPage(event.getURL()) 方法,使得 JEditorPane 顯示新的 URL 地址。 JE
9、ditorPane 優(yōu)缺點 由于 JEditorPane 是包含在 J2SE 中的 Swing 中,所以不需要導入第三方的 jar 文件,相對來說比較簡單。但是 JEditorPane 類對于網(wǎng)頁中的 CSS 的顯示處理以及對 JavaScript 腳本執(zhí)行的支持很弱,而且官方似乎也沒有對 JEditorPane 類進行改進的打算,如果想用 JEditorPane 來顯示常見的網(wǎng)址,會發(fā)現(xiàn)顯示出來的頁面與 IE,Firefox 有很大的差別,而且不能正常地處理頁面邏輯。所以如果僅僅用來顯示比較簡單的 HTML, 用 JEditorPane 還是一個不錯的選擇。 回頁首 開源的 Java
10、Web 瀏覽器實現(xiàn) - Lobo Lobo 項目是一個第三方的開源 Java 瀏覽器項目,它的官方網(wǎng)站是 http://lobobrowser.org/java-browser.jsp。 它是使用 100%Java 代碼實現(xiàn)的,而且能完整地支持 HTML4、JavaScript 以及 CSS2,除此之外,它還支持直接的 JavaFX 渲染。 Lobo 本身就已經(jīng)是一個完整的瀏覽器軟件,同時它還提供了很多與網(wǎng)頁瀏覽器相關(guān)的 API,便于 Java 程序員在自己的代碼中使用或者進行擴展,其中包括渲染引擎 API、瀏覽器 API 以及插件系統(tǒng) API 等等。具體的功能可以在它的官方網(wǎng)站上查看。
11、 Lobo 中的 FramePanel Lobo 中實現(xiàn) Web 瀏覽器的類叫 FramePanel,它提供了對 HTML 頁面顯示的封裝,并且提供了一些輔助的方法。下面是一些常見方法的介紹: FramePanel() 創(chuàng)建一個單獨的 FramePanel 對象,它能被添加到任意的 Swing 窗口或者組件上。 boolean back() 瀏覽器返回上一個頁面 boolean alert(String message) 打開一個提示對話框,并且顯示消息 boolean forward() 瀏覽器進入下一個界面 boolean confirm(String message)
12、 打開一個確認對話框,顯示特定的消息 void navigate(String url) 在這個組件里面顯示特定的網(wǎng)址,參數(shù)一個網(wǎng)址的 String void reload() 重新加載當前的界面 addContentListener(ContentListener listener) 添加一個內(nèi)容變化的監(jiān)聽器 addNavigationListener(NavigationListener listener) 添加一個導航(所顯示的 URL 變化)的監(jiān)聽器 addResponseListener(ResponseListener listener) 添加一個獲取服務(wù)器返
13、回結(jié)果的監(jiān)聽器 使用 FramePanel 要想使用 FramePanel,首先需要在它的官方網(wǎng)站上面下載它的安裝包,然后在安裝目錄下,可以看到有 lobo.jar 以及 lobo-pub.jar,將這兩個 jar 文件添加到 classpath 中。類似于 JEditorPane, 要使用 FramePanel 有以下的步驟: · 創(chuàng)建一個 FramePanel 的對象 FramePanel browser=new FramePanel(); · 將這個對象添加到界面上。Frame 是繼承自 JPanel, 所以可以像其他 Swing 組件一樣地添加到 JPanel 或者
14、窗口上面。 · 通過調(diào)用 FramePanel.navigate(url) 的方法來設(shè)置要顯示的網(wǎng)址。 · 不同于 JEditorPane,F(xiàn)ramePanel 已經(jīng)默認處理了點擊超鏈接的事件,不需要另外手動地編寫代碼來處理。 Lobo 瀏覽器 API 的優(yōu)缺點 首先 Lobo 的 FramePanel 是 100% 純 Java 的實現(xiàn),具有良好的可移植性,在 Window/Linux 平臺下都能正常地運行。它相比于 Swing 中的 JEditorPane,對于 HTML、CSS 的顯示以及對于 JavaScript 的執(zhí)行都有了比較大的提高。經(jīng)過實際的使用測試,在訪問大多數(shù)網(wǎng)頁的
15、時候,都能比較正常的顯示,與主流的 IE/Firefox 效果類似,不過它對于 CSS 支持還不是很完整,對于某些比較復雜的網(wǎng)頁的,顯示出入比較大。另外 Lobo 項目的文檔還不是特別完善,這可能是限制它廣泛使用的一個原因。 回頁首 JDICplus 中的瀏覽器組件 JDIC(Java Desktop Integration Components)項目的背景是當可以不考慮 Java 代碼的平臺可移植性的時候,能讓 Java 程序與系統(tǒng)無縫地整合在一起。它提供給 Java 代碼直接訪問本地桌面的功能,其中包含了一系列的 Java 包以及工具,包含了嵌入本地瀏覽器組件的功能,啟動桌面應(yīng)用程序
16、,在桌面的系統(tǒng)托盤處添加托盤圖標以及注冊文件類型關(guān)聯(lián)等等。 JDICplus 是在 JDIC 項目上的另外一個擴展,它是一個 Java 的 win32 操作系統(tǒng)的擴展開發(fā)工具包,也就是說,它只能在 Windows 操作系統(tǒng)上使用,所以不具有平臺無關(guān)性。它提供了很多類似于 Windows API 的功能,除了提供了對 IE 組件的封裝之外,還有地圖顯示組件,以及編輯瀏覽 MS Word、MS PPT、MS Excel、MS Outlook、PDF 的組件。JDICplus 的官方網(wǎng)站是 JDICplus 這個庫的 DEMO,這里討論的主要是對 Windows IE 封裝的瀏覽器組件。 使用
17、JDICplus 的瀏覽器組件 使用 JDICplus,首先需要的是環(huán)境的配置。JDICplus 需要的是 JDK6.0 或更高的版本,您需要首先從 下載最新的版本。否則代碼不能正常編譯運行。 其次是下載 JDICplus 的類庫,然后將它添加到 classpath 中。 JDICplus 中對 IE 封裝的組件是 org.jdic.web.BrTabbed,它除了封裝了網(wǎng)頁的顯示,還處理了多個標簽頁的功能,所以它相對是比較強大的。使用它的步驟如下: · 初始化 JDICplus 組件,設(shè)置它為非設(shè)計模式。這個組件它默認的模式是設(shè)計模式,此時如果用來顯示 HTML 內(nèi)容,會有很多無用
18、的信息。代碼如下: org.jdic.web.BrComponent.DESIGN_MODE = false; · 初始化一個 BrTabbed 組件: private BrTabbed browser=new BrTabbed(); · 添加到界面中,BrTabbed 是 JPanel 的子類,所以能直接在 Swing 中使用,就像其他 Swing 組件一樣添加到 JPanel 或者窗口中。 BrTabbed 類已經(jīng)處理了點擊超鏈接的事件,而且還支持多標簽,這些不需要手動編寫代碼來處理。 JDICplus 瀏覽器組件的優(yōu)缺點 JDICplus 中的瀏覽器組件使用了 JN
19、I 來對 IE 進行了封裝,所以它顯示的效果與 IE 完全相同(還包括其中的右鍵菜單),而且 BrTabbed 還內(nèi)置了多標簽的功能,使用起來相對比較簡單,同樣不需要去處理點擊超鏈接的事件。它的缺點首先在于它必須是使用 JDK6.0 或以上版本,要求比較高,同時它底層使用的是 Windows 操作系統(tǒng)相關(guān)的 API,所以不具有平臺無關(guān)性。 回頁首 SWT 中的瀏覽器組件 SWT(The Standard Widget Kit)是 Java 的一套開源組件庫,它提供了一種高效的創(chuàng)建圖像化用戶界面的能力,也是 Eclipse 平臺的 UI 組件之一。它相比于 Swing,速度相對比較快,而且
20、因為使用了與操作系統(tǒng)相同的渲染方式,界面上與操作模式上比較接近操作系統(tǒng)的風格。SWT 的跨平臺性是通過不同的底層支持庫來解決的。 SWT 的 Browser 類 org.eclipse.swt.browser.Browser 類是 SWT 中用來實現(xiàn)網(wǎng)頁瀏覽器可視化組件的類,它能顯示 HTML 文檔,并且實現(xiàn)文檔之間的超鏈接。它主要有以下的方法。 boolean back() 當前的會話返回到歷史上前一個界面 boolean execute(String script) 執(zhí)行特定的腳本 boolean forward() 當前的會話前進到歷史上下一個頁面 void
21、 refresh() 刷新顯示當前的界面 setText(String html) 顯示特定的 HTML 內(nèi)容 setUrl(String url) 顯示特定的網(wǎng)頁內(nèi)容,傳入的參數(shù)是網(wǎng)頁的地址 使用 Browser 類 以下的代碼演示了如何使用 SWT 中的 Browser 類: · SWT 的 Browser 類 demo package org.dakiler.browsers; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser;
22、 import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public clas
23、s SWTBrowserTest { public static void main(String args[]) { Display display=new Display(); Shell shell=new Shell(display); shell.setText("SWT Browser Test"); shell.setSize(800,600); final Text text=new Text(shell,SWT.BORDER);
24、 text.setBounds(110,5,560,25); Button button=new Button(shell,SWT.BORDER); button.setBounds(680,5,100,25); button.setText("go"); Label label=new Label(shell,SWT.LEFT); label.setText("輸入網(wǎng)址 :"); label.setBounds(5, 5, 100, 25);
25、 final Browser browser=new Browser(shell,SWT.FILL); browser.setBounds(5,30,780,560); button.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { String input=text.g
26、etText().trim(); if(input.length()==0)return; if(!input.startsWith("http://")) { input="http://"+input; text.setText(input); } browser.setUrl(input); }
27、 }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } 回頁首 結(jié)束語 本文介紹了四種在 Java 圖形界面中顯示 HTML 或者特定網(wǎng)頁的方法,包括 Swing 中的 JEditorPane 組件、Lobo 瀏覽器的實現(xiàn)、JDICplus 以及 SWT 的 Browser 組件。 對于熟練使用 SWT 的 Java 開發(fā)者來說,使用 SWT 中的瀏覽器組件是一個很好的選擇。如果是對于使用 Swing 的程序員來說,如果僅僅是顯示不太復雜的 HTML,JEditorPane 就可以勝任了;如果不需要考慮到軟件的可移植性,只需要在 Windows 下運行,那么使用 JDICplus 的瀏覽器組件是一個很好的選擇;如果需要考慮可移植性,可以考慮使用 Lobo 瀏覽器。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。