《2022年2022年利用JAVA實現網頁瀏覽器的方法》由會員分享,可在線閱讀,更多相關《2022年2022年利用JAVA實現網頁瀏覽器的方法(8頁珍藏版)》請在裝配圖網上搜索。
1、利用 Java實現網頁瀏覽器的方法使用 VC,VB 或者 C#的開發(fā)者們對于在程序里面嵌入一個網頁來說,那真是小事一樁。但是在 JAVA 里面,卻幾乎是不可能實現的任務。JEditorPane雖然說可以打開網頁,但是它那解析速度以及解析質量,對于今天日益復雜的網頁內容來說,就像沒有一樣。今天我們就使用一個開源的組件(jdic)來實現在 JAVA 程序里面嵌入網頁的效率。下面言歸正轉吧,我們來介紹一下這個開源的組件,它的名字叫JDIC(JDesktop Integration Components),網址為:https:/ JDK6.0就采納了其中了一些,比如系統(tǒng)欄圖標的SystemTray和S
2、ystemIcon,還有代表桌面的Desktop等等,可見這個API 是挺不錯的。由于網頁瀏覽器的特殊性,標準的 JDK 并沒有把它加入進來,但是我們一樣可以下載它來使用這個功能。明顯地,這個功能是用本地方法實現的,所以下載完以后,把jdic.dll放到我們的path目錄中,比如system32文件夾下面,然后我們就可以使用它的功能從而增加我們的JAVA程序了。如果你經常訪問,或者讀過JavaOne的新聞報道,你可能聽過Jdesktop Integration Components(JDIC)。這些新的API 終于能讓Java 開發(fā)人員做那些我們曾經羨慕本地同胞們所做的那些事情了。本文將給你一
3、個有關JDIC 特性的全面介紹,每一個特性都帶有一個小例子,以及要邁出第一步該下載些什么的一個列表。除了 SaverBeans子項目我們要在第二部分介紹外,我們將試驗所有的API JDesktop Integration Components,或 JDIC,是一個給Java 開發(fā)人員提供通過交差平臺 API 存取本地特性的包羅萬象的項目。該項目由Sun 的 Desktop組啟動,目的是讓 Java 應用能更好地和它們所運行的桌面環(huán)境集成。為了能從開發(fā)人員那里得到想要的特性的快速反饋,他們將JDIC 做成了開源項目。盡管目前沒有計劃,但JDIC 團隊正考慮把 JDIC 的特征加入Java 核心類
4、庫的未來版本中去名師資料總結-精品資料歡迎下載-名師精心整理-第 1 頁,共 8 頁 -JDIC 分為五個部分和一個孵化中的項目:l 桌面:為了打開、編輯和用email郵寄文件來打開桌面程序;l 文件類型:設置桌面文件類型關聯;l 瀏覽器:在AWT 畫布上嵌入本地瀏覽器(Internet Explorer或者 Mozilla);l 包裝器:把Java Web Start程序轉換成本地安裝程序的命令行工具;l 托盤 API:支持系統(tǒng)托盤圖標和彈出式菜單;l SaverBeans:Java 中的系統(tǒng)屏幕保護;桌面組件桌面組件是最簡單和可能是最有用的JDIC 組件了。它專用于基本的桌面服務,如在正確
5、的編輯器里打開一個文件,新建一封Email,或者把一個URL 發(fā)送到默認的web 瀏覽器。構建這些東西需要做很多的工作,但使用起來卻非常容易。如果你想告訴操作系統(tǒng)打開一個 Word文檔,調用Desktop.open(new File(“resume.doc”);就可以了,就這么簡單。Org.jdesktop.jdic.desktop包只有三個類:Desktop,Message和DesktopException。Desktop類是靜態(tài)的不能被實例化。它有幾個打開、編輯和打印文件的方法。你也能打開一個新的email和用文本填充它。這就是 Message使用的地方,它能讓你設置接收人,郵件體,附件,
6、和其他部分。有關 Desktop組件包最好的事就是它用起來是多么地簡單。你不需要注冊任何特殊的驅動或者修改基于當前平臺的配置。這些東西都已經在幕后做好了。只要你的jdic.jar文件名師資料總結-精品資料歡迎下載-名師精心整理-第 2 頁,共 8 頁 -在你的類路徑中和本地庫在你的庫路徑中(通常你把它和.jar文件放在一起),代碼就可以工作了。下邊是一個啟動一個瀏覽器的在線例子:以下是代碼片段:import org.jdesktop.jdic.desktop.*;import .*;public class DesktopTest public static void main(String
7、args)throws Exception Desktop.browse(new URL(http:/ 的下一個核心組件是文件類型包,它用來設置文件類型關聯。這意味著你能告訴操作系統(tǒng)什么文件用什么程序打開,例如總是用Word打開文本文件而不是用寫字板打開。用這個 API 你能查詢、設置和刪除基于文件擴展名和mime類型的文件類型關聯。假如那個文件類型通常是某種操作系統(tǒng)上特有的,檢索關聯或者注冊應用本身而不是設置關聯時,這個API 顯得更為有用。例如,在Windows下,通常的文本文件的關聯是調用在眾所周知的目錄下的notepad.exe。在 Gnome下,它可能調用/usr/local/bin
8、/gedit。由于這是和系統(tǒng)相關的,除了把java應用綁定到自己文件的類型,設置關聯可能不是非常有用。盡管如此,不管你用它做什么,文件類型組件通過處理注冊表和MIME 類型數據的方式為你處理了所有繁重的工作。下邊是一個設置文件關聯的簡短的例子:以下是代碼片段:import org.jdesktop.jdic.filetypes.*;import .*;public class FileTypesTest 名師資料總結-精品資料歡迎下載-名師精心整理-第 3 頁,共 8 頁 -public static void main(String args)throws Exception Action
9、action=new Action(open,C:WINDOWSsystem32 otepad.exe%1);Association assoc=new Association();assoc.addFileExtension(.mchat);assoc.setMimeType(application/mad-chatter);assoc.addAction(action);AssociationService svc=new AssociationService();svc.registerUserAssociation(assoc);Main 方法的前兩行創(chuàng)建了一個將會用notepad.e
10、xe打開文件(用%1 代替)的 Action。之后的四行在action和擴展名為.mchat的文件之間創(chuàng)建了關聯。在過去,大多數操作系統(tǒng)專門依賴于文件擴展名或者所有的元數據來確定文件類型。然而在今天,大多數操作系統(tǒng)傾向于為所有文件設置MIME,因此,現在開始使用它是有益的。最后兩行實際上是在系統(tǒng)上注冊關聯。在使用所有的JDIC API時,只要本地庫在你的庫路徑上,讓它工作起來你不需要做任何特別的事情。瀏覽器組件JDIC 的第三個主要組件是瀏覽器組件。不象前邊的兩個,它們只是讓你存取系統(tǒng)服務,這個組件給你了一個真正在圖形應用里使用的AWT 器件。以前,你可以使用第三方的嵌入式組件或純java的瀏
11、覽器,但 JDIC 讓你把用戶默認的web 瀏覽器嵌入到你的應用中,這些為我們創(chuàng)造了很多機會?,F在寫一些有全面Web 支持的 RSS 閱讀器變成了可能的事情。由于你不必把本地瀏覽器包含進你的應用中,下載速度也更快了。瀏覽器組件API 可以讓你訪問幾個瀏覽器事件以及在歷史記錄上的控制(向前,后退,刷新)。未來修訂的API 版本希望能提供更多存取瀏覽器和任意裝載的文檔的功能。在你的應用里使用瀏覽器組件實在是非常容易:名師資料總結-精品資料歡迎下載-名師精心整理-第 4 頁,共 8 頁 -以下是代碼片段:import org.jdesktop.jdic.browser.*;import .*;imp
12、ort javax.swing.*;public class BrowserTest public static void main(String args)throws Exception WebBrowser browser=new WebBrowser();browser.setURL(new URL(http:/);JFrame frame=new JFrame(Browser Test);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(browser);frame.pack
13、();frame.setSize(500,500);frame.setVisible(true);正如你所看到的那樣,WebBrowser對象僅僅是一個你可以把它放入一個標準的Jframe中的 AWT 組件。Main 方法的第一行創(chuàng)建了一個新的WebBrowser,第二行設置了你想顯示的URL。其他的代碼創(chuàng)建了一個frame,把瀏覽器加入其中,并使得frame可見記住 WebBrowser是個本地AWT 組件,因此你可能陷入與Swing結合的困境。混合它們的兩個規(guī)則是1)不要讓 Swing和 AWT 組件重疊和2)在你的菜單上調用setLightWeightPopupEnabled(false
14、)否則它們將消失在瀏覽器組件后邊。瀏覽器組件將立刻使用用戶的默認Web 瀏覽器,它們通常是Internet Explorer或Mozilla。你不能象使用Jrex(http:/jrex.mozdev.org/)那樣把 Mozilla的必須的部分和你的應用綁在一起。這種做法可能在Windows上行得通,IE 絕對是可以的,但在Linux上有更多的問題,因為它上邊的默認瀏覽器不一定是Mozilla(例如,在KDE 上它可能是Konquorer)。希望這些問題隨著項目的成熟能夠解決,但目前它對許多項目是很有用的。包裝器組件名師資料總結-精品資料歡迎下載-名師精心整理-第 5 頁,共 8 頁 -不象其
15、他的JDIC,包裝器模塊不是API,而是把JNLP(Java Web Start)應用轉換成本地安裝程序(Linux上是 rpms,Solaris上是 pkgs,Windows上是 msis)的一組命令行工具。這不是說象Jsmooth或 JexePack那樣把你的應用轉換成.exe;它僅僅為Web Start應用提供點擊安裝的功能。在程序安裝之后,它將使用JNLP 通過 Internet更新自己,做 Web Start應用能做的所有的其他事情。包裝器組件需要J2SE5.0和本地工具。對Windows而言,你需要安裝Microsoft的MSI SDK。一旦你的環(huán)境建立了起來,就能使用命令行工具j
16、nlp2msi,jnlp2rpm,和jnlp2pkg把你的 Web Start應用轉換成與平臺相關的安裝程序。系統(tǒng)托盤托盤圖標 API 曾是一個孵化中項目,但由于 社區(qū)的勤奮努力,它已經成熟并把它提升到一個完全的JDIC 組件的地位。假如你的操作系統(tǒng)有托盤的概念的話,它的目的是在屏幕的右下角創(chuàng)建小程序狀態(tài)圖標。實際上,這種操作系統(tǒng)是指Windows和 Linux。Mac OS X用戶則沒有這個運氣。它也支持彈出菜單和為圖標提供自動工具提示。象其他JDIC 一樣,系統(tǒng)托盤支持需要本地代碼,但你可以用Java API編碼來使用預編譯的本地庫。由于這個 API 使用范圍非常小,所以它們只有兩個類:S
17、ystemTray和 TrayIcon。SystemTray類有一個靜態(tài)工廠方法用于存取系統(tǒng)的默認托盤。TrayIcon讓你把一個JpopupMenu和 Icon添加到系統(tǒng)托盤的下一個可用的位置上。最后,調用SystemTray.getDefaultSystemTray().addTrayIcon()顯示你的彈出菜單。讓我們研究一個小例子:以下是代碼片段:import org.jdesktop.jdic.tray.*;import java.awt.event.*;import javax.swing.*;名師資料總結-精品資料歡迎下載-名師精心整理-第 6 頁,共 8 頁 -public c
18、lass SystemTrayTest public static JMenuItem quit;public SystemTrayTest()JPopupMenu menu=new JPopupMenu(My Menu);menu.add(new JMenuItem(Test 1);menu.add(new JMenuItem(Test 2);quit=new JMenuItem(Quit);quit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent evt)System.exit(0)
19、;);menu.add(quit);ImageIcon icon=new ImageIcon(duke.gif);TrayIcon tray_icon=new TrayIcon(icon,System Tray Test!,menu);SystemTray tray=SystemTray.getDefaultSystemTray();tray.addTrayIcon(tray_icon);public static void main(String args)new SystemTrayTest();在 SystemTrayTest構造函數的前邊的幾行我們用三個菜單項創(chuàng)建了一個JpopupMe
20、nu。最后一個是quit,增加了一個ActionListener用于退出程序。現在,除了把菜單添加到菜單條上和Jcomponent上外,我們把菜單放進了TrayIcon的構造函數里。顯示系統(tǒng)托盤圖標的ImageIcon連同工具提示文字也傳進了TrayIcon里。最后,我們把TrayIcon添加到默認的SystemTray 上,程序就完成了。把tray.jar和 tray.dll分別放到類路徑和庫路徑中(通常是工作路徑)。TrayAPI也支持動畫GIF 圖標和左鍵動作。用這個API,你就能讓你的應用程序在你需要的時候才顯示在任務條上。孵化器項目名師資料總結-精品資料歡迎下載-名師精心整理-第 7
21、 頁,共 8 頁 -從一開始,JDIC 設計的目的是積極鼓勵和開發(fā)新的API。為了方便項目的成長,他們創(chuàng)建了孵化器項目,在那里開發(fā)人員可以提交他們的代碼和試驗他們的想法。如果他們的想法不錯并實現成熟,項目就可以提升為一個完全的JDIC 模塊甚至發(fā)展成為一個新的項目。SaverBeans SDK我過去保留我最喜愛的API。現在,JDIC 有一個主要的孵化器項目:一個叫做SaverBeans的創(chuàng)建交差平臺屏保的工具包。象其他 JDIC 一樣,你可以用Java 做全部編碼,讓預建好的本地庫處理大量的細節(jié)。該項目由處理回調的API,一個用于配置的xml文件,和一個用平臺支持文件產生平臺相關屏幕保護可執(zhí)行程序(在 Windows上是.scr,在 Unix 上是 shell腳本)的 Ant 任務組成。寫一個屏保要比用其他的API 更復雜些,因此我把這部分放在本系列中的第二部分加以描述。然而,如果你想立刻開始學習,你可以下載SDK(https:/ 8 頁,共 8 頁 -