java瀏覽器課程設(shè)計(jì)_第1頁(yè)
java瀏覽器課程設(shè)計(jì)_第2頁(yè)
java瀏覽器課程設(shè)計(jì)_第3頁(yè)
java瀏覽器課程設(shè)計(jì)_第4頁(yè)
java瀏覽器課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 重慶大學(xué)計(jì)算機(jī)系課程設(shè)計(jì)報(bào)告課程名稱課程代題目:WEB瀏覽器開(kāi)發(fā)2012年12月15日2013年01月03日年級(jí)/專業(yè)/班學(xué)生姓名學(xué)號(hào)指導(dǎo)老師開(kāi)題時(shí)間完成時(shí)間計(jì)算機(jī)01班2012年元12月15日湖南人文科技學(xué)院課程設(shè)計(jì) 課程設(shè)計(jì)任務(wù)書及成績(jī)?cè)u(píng)定課程名稱:Java程序設(shè)計(jì)完成者:1、設(shè)計(jì)的目的與要求本課程設(shè)計(jì)需要學(xué)生運(yùn)用面向?qū)ο缶幊毯途W(wǎng)絡(luò)編程方法等,建立模型,最后設(shè)計(jì)出一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)瀏覽器,使該瀏覽器具有打開(kāi)內(nèi)容簡(jiǎn)單的網(wǎng)頁(yè),以及將網(wǎng)頁(yè)另存,網(wǎng)頁(yè)前進(jìn)和后退,并且能夠查看所瀏覽網(wǎng)頁(yè)的源代碼。目錄TOC o 1-5 h z摘要I HYPERLINK l bookmark14 1引言1 HYPERLI

2、NK l bookmark16 2設(shè)計(jì)任務(wù)與目的1 HYPERLINK l bookmark18 3需求分析2 HYPERLINK l bookmark20 4系統(tǒng)設(shè)計(jì)2 HYPERLINK l bookmark22 4.1總體設(shè)計(jì)2 HYPERLINK l bookmark24 WebBrowser.java2 HYPERLINK l bookmark26 ViewSourceFrame.java2 HYPERLINK l bookmark28 用例圖與類圖34.2.1用例圖34.2.2系統(tǒng)類圖4 HYPERLINK l bookmark32 5系統(tǒng)實(shí)現(xiàn)5 HYPERLINK l bookm

3、ark34 5.1.主要功能運(yùn)行效果55.2系統(tǒng)運(yùn)行和發(fā)布7 HYPERLINK l bookmark38 6結(jié)束語(yǔ)8 HYPERLINK l bookmark40 參考文獻(xiàn)8 HYPERLINK l bookmark42 致謝8附錄A:系統(tǒng)源程序錯(cuò)誤!未定義書簽。 HYPERLINK l bookmark44 附錄B:編碼規(guī)范28湖南人文科技學(xué)院課程設(shè)計(jì) I摘要本設(shè)計(jì)可以幫助同學(xué)掌握和應(yīng)運(yùn)所學(xué)的面向?qū)ο蟪绦蛟O(shè)計(jì)網(wǎng)頁(yè)編程內(nèi)容,培養(yǎng)同學(xué)們建立對(duì)象模型,處理對(duì)象和對(duì)象集關(guān)系和對(duì)網(wǎng)絡(luò)編程的能力,訓(xùn)練同學(xué)為解決實(shí)際問(wèn)題而創(chuàng)建較完整的簡(jiǎn)單面向?qū)ο蠛途W(wǎng)絡(luò)編程應(yīng)運(yùn)程序的獨(dú)立編程能力.本設(shè)計(jì)是一個(gè)常見(jiàn)的網(wǎng)頁(yè)瀏

4、覽器應(yīng)運(yùn)程序.系統(tǒng)實(shí)現(xiàn)的功能:打開(kāi)url鏈接相關(guān)的網(wǎng)頁(yè);將網(wǎng)頁(yè)另存為到硬盤上;網(wǎng)頁(yè)前進(jìn);網(wǎng)頁(yè)后退;查看網(wǎng)頁(yè)源代碼.同時(shí)此瀏覽器所占內(nèi)存空間小,對(duì)于硬件的要求低,對(duì)于經(jīng)常上網(wǎng)查資料的用戶來(lái)說(shuō)是一個(gè)不錯(cuò)的選擇。關(guān)鍵詞:網(wǎng)頁(yè)瀏覽器;網(wǎng)頁(yè);java湖南人文科技學(xué)院課程設(shè)計(jì) WEB瀏覽器開(kāi)發(fā)1引言本課題的題目是:用簡(jiǎn)單的java編程編寫一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)瀏覽器。.這是一個(gè)常見(jiàn)的網(wǎng)頁(yè)瀏覽器應(yīng)運(yùn)程序.有以下學(xué)習(xí)要點(diǎn):面向?qū)ο笤O(shè)計(jì)的方法網(wǎng)絡(luò)編程編寫的方法GUI圖形界面的設(shè)計(jì)方法和Swing相關(guān)組建的靈活運(yùn)用熟練事件處理機(jī)制熟悉掌握輸入輸出流設(shè)計(jì)任務(wù)與目的隨著科學(xué)技術(shù)的發(fā)展,我們已進(jìn)入信息化時(shí)代,互聯(lián)網(wǎng)在全球的應(yīng)用

5、越來(lái)越廣泛,它已深入到我們學(xué)習(xí)生活的各個(gè)方面。為了適應(yīng)時(shí)代的發(fā)展,本次課程設(shè)計(jì)的主要任務(wù)是制作一個(gè)網(wǎng)頁(yè)瀏覽器并完成一些基本操作。其目的是:(1)運(yùn)用已學(xué)的java知識(shí)編一些簡(jiǎn)單使用的程序,通過(guò)本課程設(shè)計(jì)使我們加深理解、鞏固課堂理論知識(shí)和實(shí)驗(yàn)知識(shí);(2)使我們初步具備綜合運(yùn)用所學(xué)Java語(yǔ)言基礎(chǔ)知識(shí),面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想、方法與技術(shù),網(wǎng)絡(luò)通信編程技術(shù)和數(shù)據(jù)庫(kù)編程技術(shù)等開(kāi)發(fā)簡(jiǎn)單應(yīng)用系統(tǒng)的基本能力;(3)使理論和實(shí)際相結(jié)合,真正做到學(xué)以致用,并適應(yīng)時(shí)代發(fā)展的潮流。需求分析此網(wǎng)頁(yè)瀏覽器的主要功能描述:通過(guò)在地址欄里面輸入U(xiǎn)RL地址,可以訪問(wèn)相應(yīng)的網(wǎng)頁(yè)。除此之外,本案例中的網(wǎng)頁(yè)瀏覽器還增添了如下幾

6、個(gè)功能。1另存為:可以將正在訪問(wèn)的頁(yè)面進(jìn)行保存。2前進(jìn):訪問(wèn)現(xiàn)有頁(yè)面的上一個(gè)頁(yè)面。3后退:訪問(wèn)現(xiàn)有頁(yè)面的下一個(gè)頁(yè)面。4查看源文件:查看訪問(wèn)頁(yè)面的HTML源文件,并且提供保存功能。系統(tǒng)設(shè)計(jì)4.1總體設(shè)計(jì)網(wǎng)頁(yè)瀏覽器的程序由文件WebBrowser.java與ViewSourceFrame.java兩個(gè)文件組成。4.1.1WebBrowser.java包含名為WebBrowser的public類,其主要功能為生成網(wǎng)頁(yè)瀏覽器的主體框架,實(shí)現(xiàn)框架上各個(gè)組件的事件偵聽(tīng)。主要包括4個(gè)模塊:圖形用戶界面的構(gòu)建:組件監(jiān)聽(tīng)接口的實(shí)現(xiàn):文件保存功能的實(shí)現(xiàn):查看源代碼框架的生成。4.1.2ViewSourceFram

7、e.java包含名為ViewSourceFrame的類,其主要功能是實(shí)現(xiàn)了源文件查看的主體框架,并實(shí)現(xiàn)了源文件的保存功能。主要包括兩個(gè)模塊:圖形用戶界面的構(gòu)建:組件監(jiān)聽(tīng)接口的實(shí)現(xiàn)。4.2用例圖與類圖4.2.2系統(tǒng)類圖WebBrowserQbar:JToolBarQjurlsJTextFieldjEditorPanel;JEditorPaneZOEcrollPaneJScrollPaneOchooser:JFileChooserGchooserlJFileChooserohtmlSour匚rsStringOwindow:JWindowObutton!1ButtonOtoolkitsToolkit

8、0jMenuBl!JMenuBrOfileMenu:JMenuOEaveAsItem:JMenuItemOexitltemJMenuitemQeditMenuJMenuQbackltem:JMenuItemOforwardltem:JMenuItemOviewMenu:JMenuOhjllscreenltem:JMenuItemGsour匚電IbmsJMenuItemQreloaditemJMenuItemOtoolB-ir;JToolBarOpicSave:1ButtonOpicBack:JButtonGpicForwardJEuttonGpicViewsJEuttonOpicExitsJE

9、:LittonOlabelsJLatelObutton:JE:uttonGadressE:oxOadressSour匚皀:BoxhistoryArrayListhistorylndexint0uu匚re-ateWebErowserOactionPerfarmed(ine:A匚tionEvent):void0saveFilefinurlString)voidQgetHtmlSourcefinurlString)void令hyperlinkUpdate(ine:Hyp-arlinkEvent):voidO門引廠|1廠|汕口:口T:u口idTeKtAreaMenu曰imh乜匸引口|11。;loi口p

10、op!JPopupMenu匚opy;JMenuItempastesJMenuItemcut:JMenuItemTextAreaMenuf)initOsvoidactionfineActionEvent)voidQgetPopf)sJPopupMenuQ5ei:pQp(inpopsJPopupMenu)voidOiEClipboardStririg():booleanisCanCopyObooleanQmouseClickedfinwMouseEvent)voidQmouEeEnteredtine:MouseEvent):voidmouEeE)(ited(inesMouseEvent)voidm

11、ouEePressedfine:MouseEvent):voidmouEeReleaEed(ineMouEeEvent):voidGJEditorP-ane2缶心1甘缶口匸|廠|11匚:|:1口廠1口pop!口口pupMenuocopysJMenuItempastesJMenuItemAcutsJMenuItemQJEditorPane2()日init()svoidQw匚tionfineActionEvent):voidQgetPcpOslPcipuprenuQsetPopfinpop:JPopupr-enu):void0i5ClipboardString():boole-anQisCanCo

12、pyO:boolean0mouEeCli匚kEcl(ineMouseEvent)voidQmouseEnteredfineMouseEvent)voidQmouEeExited(ine:MouseEvent):voidQmou5ePreEEed(ine:MouseEvent):voidQmouEeRelHased(ine:MouseEvent):voidVieiuSourceFrameOcontentP-aneJPanelapanel1lp-anelOpanels:JPaneloborder1!Borderclosebutton:JButtonGE-avebuttonJEuttonajScro

13、llPanelJScrollPaneajTexlAreal:TextAreaMenuOhtmlSource:String0uu匚re-ateViewSourceFramefinhtmlSource:String)actionPerformedfine:A匚tionEvent)void4.2.2系統(tǒng)類圖5系統(tǒng)實(shí)現(xiàn)5.1主要功能運(yùn)行效果1.輸入url:?jiǎn)螕艮D(zhuǎn)向或回車,進(jìn)入網(wǎng)頁(yè)頁(yè)面;網(wǎng)頁(yè)瀏墟密mi冊(cè)百?gòu)B丈削E)編報(bào)舊BSECV)另在愛(ài)|右退|前誡奩看踮!代碼返出1地址mtpi.DaiuqDm轉(zhuǎn)冋登錄新斕頁(yè)曲吧和謹(jǐn)ME週站.辺錢百?gòu)B一下空間1迫譏右I更霸妙把百廊設(shè)光主貞朋業(yè)推.”|捜翥侃云榜|關(guān)于電度

14、|皿兀tEa;血2DOSBaidu使用百匿前坯謹(jǐn)京ICP證眄0存3號(hào)圖5112點(diǎn)擊界面的另存為,課將網(wǎng)頁(yè)存儲(chǔ)于計(jì)算機(jī)上,如圖5.1.2退出會(huì)羔詢|旋|卿|臺(tái)蓋遞優(yōu)碼睹*卜http:tfhi.fe東du.tom/baidu/轉(zhuǎn)向圖5.1.2進(jìn)入網(wǎng)頁(yè)之后,點(diǎn)擊界面的源代碼按鈕,即可查看該網(wǎng)頁(yè)的源代碼,如圖5.1.3;區(qū)觀弋軻OCOl-STftTUSOK-hlmlheadnnDtahtlp-equcontent-t/pecontem=“tE:Mhlrnl;charsBgb2312hilinkrsl=boItornalgtj/pe=applicaliorVrsg垃mrtrtlG=訂圜i密間的傅客丈章h

15、r0f=htlp:f/Jkiaidu/rss-工siylefrpe-lgjrtJCGs#layout(tak1l即口utfixe叫l(wèi)ayoutid.c311padding-leftlOpwvidth:24%layouttd.c3l2wicrth:20p蚪layouttd.c3i3vdcttn:35%)layouttd.c3Uwidtn:2op蝦flayouttd.c3!5padding-nghtl口宓何dih:36%scriptlanguage=javascrlp2k-runctionselpv(ailnumjrarnum=allnum.spinel;Marh=numonglh-l;ror(p

16、=a;ph;p+-FX嘲ocumeritgelElemeritByldfdl/+p)document.getElementB/ldfdW-np)innerHTML=numfi4*TII;1把百度設(shè)齒主頁(yè)i腋監(jiān)捱I去于百度|.outdu200P晡du便訊石JS前必運(yùn)京1CP證的0173號(hào)圖5.1.352系統(tǒng)運(yùn)行和發(fā)布要發(fā)布這個(gè)應(yīng)用程序,就應(yīng)該將應(yīng)用程序打包。使用jar.exe,可以把應(yīng)用程序中涉及到的類和圖片壓縮成一個(gè)jar文件,這樣便可以發(fā)布程序。首先編寫一個(gè)清單文件,名為MANIFEST.MF,其代碼如下:Mainfest-version:1.0Created-by:1.5.0_02(Sun

17、MicrosystemsInc.)Main-Class:WebBrowser此清單文件保存到C:JavaworkCH04.然后,使用如下命令生成jar文件:JarcfmWebBrowser.jarMANIFEST.MF*.class其中參數(shù)c表示要生成一個(gè)新的jar文件:f表示要僧成的jar文件的名字:m表示清單文件的名字如果機(jī)器安裝過(guò)WinRAR解壓縮軟件,并將jar文件與該解壓縮軟件做了關(guān)聯(lián),那么WebBrow.jar文件的類型是WinRAR,使得java程序無(wú)法運(yùn)行。因此,在發(fā)布軟件時(shí),還應(yīng)該再寫一個(gè)有如下內(nèi)容的bat文件(WebBrowser.bat):Javaw-jarWebBrow

18、ser.jar可以通過(guò)雙擊WebBrowser.bat來(lái)運(yùn)行程序。6結(jié)束語(yǔ)剛聽(tīng)到課程設(shè)計(jì)時(shí),就有一種畏難心理。我們現(xiàn)在所學(xué)的java知識(shí)九牛一毛,要編寫一個(gè)幾百甚至上千行的代碼似乎不可能。但是當(dāng)我們上網(wǎng)查找過(guò)只是一些資料后,許多題目都是由學(xué)生在老師的指導(dǎo)下做出來(lái)的,一些還有源代碼。世上無(wú)難事,只怕有心人。于是我們?nèi)M的人開(kāi)始分工合作,大家先一起搜索一些資料,然后根據(jù)各自負(fù)責(zé)的部分有目的地篩選。雖然我們天天在瀏覽網(wǎng)頁(yè),但是以前從沒(méi)想過(guò)為什么輸入一個(gè)網(wǎng)址就可以找到所需要的信息。通過(guò)此次網(wǎng)頁(yè)瀏覽器的設(shè)計(jì),使我們對(duì)網(wǎng)頁(yè)有了更深層次的了解。不過(guò)也存在一些問(wèn)題,在實(shí)現(xiàn)對(duì)網(wǎng)址的保存和當(dāng)前頁(yè)面的前進(jìn)和后退功能

19、后,應(yīng)該可以新增一些新的功能,例如在當(dāng)前的頁(yè)面再次點(diǎn)擊進(jìn)入其他頁(yè).、刷新當(dāng)前頁(yè)面等等,“書山有路勤為徑,學(xué)海無(wú)涯苦作舟”,我們現(xiàn)今所學(xué)的知識(shí)還遠(yuǎn)遠(yuǎn)不夠,在今后的學(xué)習(xí)過(guò)程中我們要進(jìn)一步學(xué)習(xí)java的更多的知識(shí),此次課程設(shè)計(jì)不僅鍛煉了我們獨(dú)立思考和團(tuán)隊(duì)合作的能力,而且提高了我們動(dòng)手的能力。參考文獻(xiàn)張廣彬,孟紅蕊,張永寶Java課程設(shè)計(jì)案例精編M.北京:清華大學(xué)出社,2007,1.黃曉東Java課程設(shè)計(jì)案例精編M.北京:中國(guó)水利水電出版社,2004,5.求是科技.Java信息管理系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航M.北京:人民郵電出版社,2005,4.求是科技Java數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航M.北京:人民郵電出版社,2

20、004,9.李芝興Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程M.北京:清華大學(xué)出版社,2006,3.劉藝,吳英Java程序設(shè)計(jì)大學(xué)教程M.北京:機(jī)械工業(yè)出版社,2006,2致謝在本次程序設(shè)計(jì)過(guò)程中,*老師給予了我們極大的支持與指導(dǎo),在此表示感謝同時(shí)也感謝給予我們建議和意見(jiàn)的同學(xué)們!源代碼:importjava.awt.datatransfer.Clipboard;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.Transferable;importjava.awt.event.MouseListener;importjava

21、.awt.*;importjavax.swing.*;importjavax.swing.text.*;importjava.awt.event.*;importjavax.swing.event.*;importjavax.swing.border.*;importjavax.swing.filechooser.FileFilter;importjavax.swing.filechooser.FileView;importjava.io.*;.*;importjava.util.*;publicclassWebBrowserextendsJFrameimplementsHyperlinkLi

22、stener,ActionListener/*CreatesanewinstanceofWebBrowser.*/建立主件JToolBarbar=newJToolBar();/工具欄JTextFieldjurl=newJTextField(60);/地址欄JEditorPane2jEditorPanel=newJEditorPane2();/網(wǎng)頁(yè)框JScrollPanescrollPane=newJScrollPane(jEditorPane1);/滾動(dòng)條JFileChooserchooser=newJFileChooser();JFileChooserchooser1=newJFileCho

23、oser();選擇文件StringhtmlSource;JWindowwindow=newJWindow(WebBrowser.this);/使用指定的所有者框架創(chuàng)建窗口湖南人文科技學(xué)院課程設(shè)計(jì)l0JButtonbutton2=newJButton(”窗口還原”);Toolkittoolkit=Toolkit.getDefaultToolkit();/獲取默認(rèn)工具包JMenuBarjMenuBarl=newJMenuBar();/建立菜單欄JMenufileMenu=newJMenu(文件(F);/建立菜單組JMenuItemsaveAsItem=newJMenuItem(另存為(S);JMe

24、nuItemexitItem=newJMenuItem(退出(E);JMenueditMenu=newJMenu(”編輯(E);建立菜單組JMenuItembackItem=newJMenuItem(后退(Z);JMenuItemforwardItem=newJMenuItem(前進(jìn)(P);JMenuviewMenu=newJMenu(視圖(V);/建立菜單組JMenuItemfullscreenItem=newJMenuItem(全屏(U);JMenuItemsourceItem=newJMenuItem(查看源代碼(C);JMenuItemreloadItem=newJMenuItem刷新

25、(R);JToolBartoolBar=newJToolBar();JButtonpicSave=newJButton(另存為);JButtonpicBack=newJButton(后退);JButtonpicForward=newJButton(前進(jìn));JButtonpicView=newJButton(查看源代碼);JButtonpicExit=newJButton(退出);/建立工具欄JLabellabel=newJLabel(地址);JButtonbutton=newJButton(轉(zhuǎn)向);Boxadress=Box.createHorizontalBox();/創(chuàng)建一個(gè)從左到右顯示其

26、組件BoxadressSource=Box.createHorizontalBox();privateArrayListhistory=newArrayList();privateinthistoryIndex;publicWebBrowser()setTitle(”網(wǎng)頁(yè)瀏覽器”);setResizable(false);/設(shè)置此frame是否可由用戶調(diào)整大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jEditorPanel.addHyperlinkListener(this);/事件監(jiān)聽(tīng)fileMenu.setMnemonic(F);sav

27、eAsItem.setMnemonic(S);saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK);exitItem.setMnemonic(P);exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK);/設(shè)置熱鍵fileMenu.add(saveAsItem);fileMenu.addSeparator();fileMenu.add(exitItem);backItem

28、.setMnemonic(B);backItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK);forwardItem.setMnemonic(D);forwardItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK);editMenu.setMnemonic(E);editMenu.add(backItem);editMenu.addSeparator();editMenu.add(forw

29、ardItem);viewMenu.setMnemonic(V);fullscreenItem.setMnemonic(U);fullscreenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK);sourceItem.setMnemonic(C);sourceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK);reloadItem.setMnemonic(R);reloadItem.

30、setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK);ContainercontentPane=getContentPane();scrollPane.setPreferredSize(newDimension(l00,500);contentPane.add(scrollPane,BorderLayout.SOUTH);toolBar.add(picSave);toolBar.addSeparator();toolBar.add(picBack);toolBar.addSeparator();too

31、lBar.add(picForward);toolBar.addSeparator();toolBar.add(picView);toolBar.addSeparator();toolBar.add(picExit);toolBar.addSeparator();toolBar.add(picExit);toolBar.addSeparator();toolBar.add(adressSource);contentPane.add(bar,BorderLayout.CENTER);contentPane.add(toolBar,BorderLayout.NORTH);viewMenu.add(

32、fullscreenItem);viewMenu.addSeparator();viewMenu.add(sourceItem);viewMenu.addSeparator();viewMenu.add(reloadItem);jMenuBar1.add(fileMenu);jMenuBar1.add(editMenu);jMenuBar1.add(viewMenu);setJMenuBar(jMenuBar1);adress.add(label);adress.add(jurl);adress.add(button);bar.add(adress);saveAsItem.addActionL

33、istener(this);picSave.addActionListener(this);exitItem.addActionListener(this);picExit.addActionListener(this);backItem.addActionListener(this);picBack.addActionListener(this);forwardItem.addActionListener(this);picForward.addActionListener(this);fullscreenItem.addActionListener(this);sourceItem.add

34、ActionListener(this);picView.addActionListener(this);reloadItem.addActionListener(this);button.addActionListener(this);jurl.addActionListener(this);/publicvoidactionPerformed(ActionEvente)Stringurl=;if(e.getSource()=button)/按downurl=jurl.getText();if(url.length()0&url.startsWith(http:/)tryjEditorPan

35、e1.setPage(url);history.add(url);historyIndex=history.size()-1;/返回此列表中的元素?cái)?shù)jEditorPane1.setEditable(false);jEditorPane1.revalidate();catch(Exceptionex)JOptionPane.showMessageDialog(WebBrowser.this,不能打開(kāi)網(wǎng)頁(yè),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);elseif(url.length()0&!url.startsWith(http:/)url=http:/+url;tryjE

36、ditorPane1.setPage(url);history.add(url);historyIndex=history.size()-1;/返回此列表中的元素?cái)?shù)jEditorPane1.setEditable(false);jEditorPane1.revalidate();catch(Exceptionex)JOptionPane.showMessageDialog(WebBrowser.this,不能打開(kāi)網(wǎng)頁(yè),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);elseif(url.length()=0)JOptionPane.showMessageDialog(WebB

37、rowser.this,不能打開(kāi)網(wǎng)頁(yè),”網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);/按回車elseif(e.getSource()=jurl)url=jurl.getText();if(url.length()0&url.startsWith(http:/)tryjEditorPane1.setPage(url);history.add(url);historyIndex=history.size()-1;/返回此列表中的元素?cái)?shù)jEditorPane1.setEditable(false);jEditorPane1.revalidate();jurl.setMaximu

38、mSize(jurl.getPreferredSize();catch(Exceptionex)JOptionPane.showMessageDialog(WebBrowser.this,不能打開(kāi)網(wǎng)頁(yè),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);elseif(url.length()0&!url.startsWith(http:/)url=http:/+url;tryjEditorPane1.setPage(url);history.add(url);historyIndex=history.size()-1;/返回此列表中的元素?cái)?shù)jEditorPane1.setEdit

39、able(false);jEditorPane1.revalidate();catch(Exceptionex)JOptionPane.showMessageDialog(WebBrowser.this,不能打開(kāi)網(wǎng)頁(yè),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);elseif(url.length()=0)JOptionPane.showMessageDialog(WebBrowser.this,不能打開(kāi)網(wǎng)頁(yè),”網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);/另存為elseif(e.getSource()=picSave|e.getSource()=sa

40、veAsItem)url=jurl.getText().trim();/去掉字符串頭和尾的空格if(url.length()0&!url.startsWith(http:/)url=http:/+url;if(!url.equals()saveFile(url);elseJOptionPane.showMessageDialog(WebBrowser.this,請(qǐng)輸入鏈接地址,網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);/exit.elseif(e.getSource()=exitItem|e.getSource()=picExit)System.exit(0);/bac

41、k.elseif(e.getSource()=backItem|e.getSource()=picBack)historyIndex-;if(historyIndex=history.size()historyIndex=history.size()-1;url=jurl.getText();tryurl=(String)history.get(historyIndex);jEditorPane1.setPage(url);jurl.setText(url.toString();jEditorPane1.setEditable(false);jEditorPane1.revalidate();

42、catch(Exceptionex)/fullscreenelseif(e.getSource()=fullscreenItem)booleanadd_button2=true;/查看原文件elseif(e.getSource()=sourceItem|e.getSource()=picView)url=jurl.getText().toString().trim();if(url.length()0&!url.startsWith(http:/)url=http:/+url;if(!url.equals()getHtmlSource(url);ViewSourceFramevsframe=n

43、ewViewSourceFrame(htmlSource);vsframe.setBounds(0,0,800,500);vsframe.setVisible(true);elseJOptionPane.showMessageDialog(WebBrowser.this,請(qǐng)輸入鏈接地址,網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);/收藏夾/刷新elseif(e.getSource()=reloadItem)url=jurl.getText();if(url.length()0&url.startsWith(http:/)tryjEditorPane1.setPage(ur

44、l);jEditorPane1.setEditable(false);jEditorPane1.revalidate();catch(Exceptionex)elseif(url.length()0&!url.startsWith(http:/)url=http:/+url;tryjEditorPane1.setPage(url);jEditorPane1.setEditable(false);jEditorPane1.revalidate();catch(Exceptionex)/savefilevoidsaveFile(finalStringurl)指示SavefinalStringlin

45、esep=System.getProperty(line.separator);/獲得指定鍵指示的系統(tǒng)屬性chooserl.setCurrentDirectory(newFile(.);/設(shè)置當(dāng)前目錄chooser1.setDialogType(JFileChooser.SAVE_DIALOG);/設(shè)置此對(duì)話框的類型,|JFileChooser支持Save文件操作的類型值chooser1.setDialogTitle(另存為”);設(shè)置顯示在JFileChooser窗口標(biāo)題欄的字符串if(chooserl.showSaveDialog(this)!=JFileChooser.APPROVE_OP

46、TION)/彈出一個(gè)File文件選擇器對(duì)話框II選擇確認(rèn)(yes、ok)后返回該值return;this.repaint();Threadthread=newThread()publicvoidrun()try.URLsource=newURL(url);InputStreamin=newBufferedInputStream(source.openStream();/BufferedReaderbr=newBufferedReader(newInputStreamReader(in);FilefileName=chooser1.getSelectedFile();/返回選中的文件FileWr

47、iterout=newFileWriter(fileName);BufferedWriterbw=newBufferedWriter(out);Stringline;while(line=br.readLine()!=null)bw.write(line);bw.newLine();/寫入一個(gè)行分隔符bw.flush();bw.close();out.close();StringdMessage=url+已經(jīng)被保存至+linesep+fileName.getAbsolutePath();/返回抽象路徑名的絕對(duì)路徑名字符串StringdTitle-另存為;intdType=JOptionPane

48、.INFORMATION_MESSAGE;JOptionPane.showMessageDialog(Component)null,dMessage,dTitle,dType);catch(.MalformedURLExceptionmuex)JOptionPane.showMessageDialog(Component)null,muex.toString(),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);catch(Exceptionex)JOptionPane.showMessageDialog(Component)null,ex.toString(),網(wǎng)頁(yè)瀏覽器,J

49、OptionPane.ERROR_MESSAGE);thread.start();/getsourcevoidgetHtmlSource(Stringurl)Stringlinesep,htmlLine;linesep=System.getProperty(line.separator);htmlSource=;try.URLsource=newURL(url);InputStreamin=newBufferedInputStream(source.openStream();BufferedReaderbr=newBufferedReader(newInputStreamReader(in);

50、while(htmlLine=br.readLine()!=null)htmlSource=htmlSource+htmlLine+linesep;catch(.MalformedURLExceptionmuex)JOptionPane.showMessageDialog(WebBrowser.this,muex.toString(),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERROR_MESSAGE);catch(Exceptione)JOptionPane.showMessageDialog(WebBrowser.this,e.toString(),網(wǎng)頁(yè)瀏覽器,JOptionPane.ERRO

51、R_MESSAGE);/publicvoidhyperlinkUpdate(HyperlinkEvente)tryif(e.getEventType()=HyperlinkEvent.EventType.ACTIVATED)jEditorPane1.setPage(e.getURL();jurl.setText(e.getURL().toString();history.add(e.getURL().toString();historyIndex=history.size()-1;catch(Exceptionex)ex.printStackTrace(System.err);/*parama

52、rgsthecommandlinearguments*/publicstaticvoidmain(Stringargs)/TODOcodeapplicationlogicheretryUIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();/使用LookAndFeel對(duì)象設(shè)置當(dāng)前的默認(rèn)外觀catch(Exceptione)WebBrowserwebBrowser=newWebBrowser();webBrowser.pack();webBrowser.setVisible(true);classJEdi

53、torPane2extendsJEditorPaneimplementsMouseListenerprivatestaticfinallongserialVersionUID=-2308615404205560110L;privateJPopupMenupop=null;/彈出菜單privateJMenuItemcopy=null,paste=null,cut=null;/三個(gè)功能菜單publicJEditorPane2()super();init();privatevoidinit()this.addMouseListener(this);pop=newJPopupMenu();pop.ad

54、d(copy=newJMenuItem(復(fù)制);pop.add(paste=newJMenuItem(粘貼);pop.add(cut=newJMenuItem(剪切);copy.setAccelerator(KeyStroke.getKeyStroke(C,InputEvent.CTRL_MASK);paste.setAccelerator(KeyStroke.getKeyStroke(V,InputEvent.CTRL_MASK);cut.setAccelerator(KeyStroke.getKeyStroke(X,InputEvent.CTRL_MASK);copy.addActionL

55、istener(newActionListener()publicvoidactionPerformed(ActionEvente)action(e););paste.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)action(e););cut.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)action(e););this.add(pop);/*菜單動(dòng)作*parame*/publicv

56、oidaction(ActionEvente)Stringstr=e.getActionCommand();if(str.equals(copy.getText()/復(fù)制this.copy();elseif(str.equals(paste.getText()/粘貼this.paste();elseif(str.equals(cut.getText()/剪切this.cut();publicJPopupMenugetPop()returnpop;publicvoidsetPop(JPopupMenupop)this.pop=pop;/*剪切板中是否有文本數(shù)據(jù)可供粘貼*returntrue為有文

57、本數(shù)據(jù)*/publicbooleanisClipboardString()booleanb=false;Clipboardclipboard=this.getToolkit().getSystemClipboard();Transferablecontent=clipboard.getContents(this);tryif(content.getTransferData(DataFlavor.stringFlavor)instanceofString)b=true;catch(Exceptione)returnb;/*文本組件中是否具備復(fù)制的條件*returntrue為具備*/publicb

58、ooleanisCanCopy()booleanb=false;intstart=this.getSelectionStart();intend=this.getSelectionEnd();if(start!=end)b=true;returnb;publicvoidmouseClicked(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmousePressed(MouseEvente)if(e.getButton()=MouseEvent.BUTTON3)

59、copy.setEnabled(isCanCopy();paste.setEnabled(isClipboardString();cut.setEnabled(isCanCopy();pop.show(this,e.getX(),e.getY();publicvoidmouseReleased(MouseEvente)importjava.awt.datatransfer.Clipboard;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.Transferable;importjava.awt.*;impor

60、tjavax.swing.*;/最常用的包,包含了各種swing組件importjava.awt.event.*;importjavax.swing.event.*;/處理由swing組件產(chǎn)生的事件,有別于awt事件importjavax.swing.border.*;importjavax.swing.filechooser.*;/importjavax.swing.filechooser.FileView;importjava.io.*;importjava.util.*;classViewSourceFrameextendsJFrameimplementsActionListenerJP

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論