版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 虛擬的Jaava編輯輯器設(shè)計報報告一、需求分分析此次課程設(shè)設(shè)計名稱為為JAVAA編輯器。需要設(shè)設(shè)計一個圖形界面面的文本編編輯器,能編輯輯Javaa語言源程程序,界面面和功能類類似Ediitpluus。演示程序為為計算機(jī)和和用戶的對話形式執(zhí)行,即在在計算機(jī)的終端顯示示圖形界面面的文檔編輯輯器,然后用戶戶就可以實現(xiàn)現(xiàn)編輯,保保存等像記記事本一樣的功能能。(1)打開開以有文件件,保存編編輯文件,退退出編輯器并提醒保存存;(2)查找找編輯區(qū)中的的字符串,用用已知字符符串替換查找的字字符串;(3)顯示示文件的存存取路徑;(4)剪切切,復(fù)制,粘貼,刪除等;(5)改變變文本區(qū)字體體的顏色,字體大小和和形狀
2、的功能能;(6)關(guān)鍵鍵字顯示藍(lán)藍(lán)色、類庫庫類名顯示示紅色。二. 設(shè)計計設(shè)計思想Java編編輯器是用用來編寫jjava程程序的源代代碼。Jaava程序序編輯器是是:圖形界界面、線程程、流與文文件等技術(shù)術(shù)的綜合應(yīng)應(yīng)用。圖形界面的的實現(xiàn):就就選擇了sswingg來完成實實現(xiàn),在選選擇組件上上,文本編編輯區(qū)就選選用了JTTextPanne作為主主要的部件件。由于Javva的特性性,可能用用任何一個個編輯器來來編輯,于于是就將WWindoows中的的記事本作作為模仿對對象,根據(jù)據(jù)實現(xiàn)情況況刪減了其其中的一些些功能,如如自動換行行,設(shè)置字字體,打印印等功能。在設(shè)計類類的時候,考考慮到簡單單明了,一一個主類
3、,一個默認(rèn)認(rèn)屬性myyfr類,染色類類SynttaxHiighliighteer作為程程序的整體體框架,所所有的對象象和方法都都是在默認(rèn)認(rèn)屬性類和和染色類中中創(chuàng)建和實實現(xiàn)的,以以及為各組組件注冊事事件監(jiān)聽程程序也是在在默認(rèn)屬性性類染色類類中實現(xiàn)的的。本程序序主類完成成對象的實實例化及顯顯示。功能設(shè)計本程序涉及及到了對圖圖形用戶界界面的設(shè)計計與實現(xiàn)和和菜單的設(shè)設(shè)計與實現(xiàn)現(xiàn)。用戶可可以通過此此編輯器對對javaa文件進(jìn)行行文字的復(fù)復(fù)制、剪切切、粘貼、刪除、查查找、替換換、時間的的插入、設(shè)設(shè)置字體顏顏色和關(guān)鍵鍵字、類庫庫名著色等等。本程序主要要有以下33個模塊組組成:(1)主體體模塊由窗口、功功能菜
4、單、文本框組組成。為用用戶選擇編編輯的功能能提供了簡簡單、方便便的界面。Javaa的窗口由由JFramme類生成成,我們可可以在創(chuàng)建建的空白窗窗口上添加加組件。菜菜單是圖形形用戶界面面的重要組組成部分,是是由菜單條條(MennuBarr)、菜單單(Mennu)、菜菜單項(MMenuIItem)和和復(fù)選菜單單項(Chheckbbox MMenuIItem)等等對象組成成。(2)功能能模塊有文件的新新建、打開開、保存、另存為和和退出,文文字的復(fù)制制、剪切、粘貼、刪刪除、查找找、替換、以及時間間的插入,為為用戶提供供了javva編輯器器的基礎(chǔ)功功能。 (3)染色色模塊關(guān)鍵字顯示示藍(lán)色,類類庫名顯示示
5、紅色。實實現(xiàn)高亮子子的核心方方法StyleedDoccumennt.seetChaaractterAtttribbutess(intt offfset, intt lenngth, AtttribuuteSeet s, boooleann repplacee)詳細(xì)設(shè)計本設(shè)計主要要是模仿wwindoows記事事本界面,主主要的難點點是關(guān)鍵字字染色算法法和查找替替換算法。其他的部部分相對簡簡單,主要要就是一些些容器組件件的組合,布布局的設(shè)置置。主要的的功能都在在myfrr類中實現(xiàn)現(xiàn)的。Java中中提供的多多行文本編編輯器有: JTeextCoomponnent, JTeextArrea, JTex
6、xtPanne, JJEdittorPaane等, 都可以以使用但是是因為語法法著色中文文本要使用用多種風(fēng)格格的樣式, 所以這這些文本編編輯器的ddocumment要要使用SttyleddDocuumentt. JTTextAArea使使用的是PPlainnDocuumentt, 此ddocumment不不能進(jìn)行多多種格式的的著色.JJTexttPanee, JEEditoorPanne使用的的是StyyledDDocumment, 默認(rèn)就就可以使用用.為了實現(xiàn)語語法著色, 可以繼繼承自DeefaulltStyyledDDocumment, 設(shè)置其其為這些文文本編輯器器的doccumett,
7、或者者也可以直直接使用JJTexttPanee, JEEditoorPanne來做. 為了方方便, 這這里就直接接使用JTTextPPane了了(1)主類類 cllass ok 實例化初初始化窗口口 (22)主窗口口體類 cclasss myffr 字體體類 cllass MyFoont (33)染色類類classs SyyntaxxHighhlighhter (4)鼠鼠標(biāo)右鍵彈彈出菜單類類classs hhandllemouuse (5)幫幫助主題類類classs myyhelpp(6)關(guān)閉閉窗口XXXX類cllass xxx(7)關(guān)閉閉幫助主題題窗口類cclasss xxxxhelpp三.
8、 調(diào)試試及測試 1. 調(diào)試過過程中遇到到的主要問問題及解決決方法 開始把染染色類寫在在myfrr中,結(jié)果果出現(xiàn)繼承承錯誤,只只好把染色色類寫在mmyfr之之外,通過過引用實現(xiàn)現(xiàn)類與類聯(lián)聯(lián)系。在開開始設(shè)置字字體顏色是是出現(xiàn)問題題,關(guān)鍵字字可著色,不不能設(shè)置字字體顏色,最最后發(fā)現(xiàn)時時沒有監(jiān)聽聽器的位置置出現(xiàn)了問問題! 2. 對設(shè)計計和編碼的的回顧討論論和分析 在本設(shè)設(shè)計中沒有有用數(shù)據(jù)庫庫,在直接接用哈希表表定義,所所以只能簡簡單定義幾幾個常用的的關(guān)鍵字、類庫名,能能說明功能能實現(xiàn)就可可以,這也也是可以該該進(jìn)的地方方。設(shè)計的的功能有限限,只能實實現(xiàn)簡單的的文本編輯輯,沒有編編譯,運(yùn)行行等等功能能,這
9、也是是能力有限限。 3.測試數(shù)據(jù)據(jù)集 (11)主體模模塊定義一個mmyfr類類對象,完完成主類的的實例化顯顯示。(2)功能能模塊(A)文件件(新建、打開、保保存、另存存為、退出出)功能圖如下下:(B)編輯輯(復(fù)制、剪切、粘粘貼、刪除除、查找、查找下一一個、替換換、替換下下一個、全全選、日期期/時間)功能圖如下下:(C)格式式(字體、字體顏色色)功能圖如下下:(D)格式式風(fēng)格(狀狀態(tài)欄)功能圖如下下:(E)幫助助(幫助主主題、關(guān)于于)功能圖如下下:(F)關(guān)鍵鍵字顯示藍(lán)藍(lán)色、類庫庫類名顯示示紅色功能圖如下下:四、經(jīng)驗和和體會。通過此次成成功的實現(xiàn)現(xiàn)了Javva文本編編輯器的設(shè)設(shè)計與編寫寫,我進(jìn)一一
10、步鞏固、加深了對對專業(yè)課程程JAVVA語言教教程的基基礎(chǔ)理論知知識的理解解,使我熟熟練的掌握握了JAVVA語言的的輸入輸出出流、數(shù)據(jù)據(jù)庫連接的的使用,靈靈活運(yùn)用各各種類庫。此次利用用所學(xué)知識識,開發(fā)小小型應(yīng)用系系統(tǒng)我掌握握了如何運(yùn)運(yùn)用JAVVA語言編編寫調(diào)試應(yīng)應(yīng)用系統(tǒng)程程序,并且且訓(xùn)練了我我獨立開發(fā)發(fā)應(yīng)用系統(tǒng)統(tǒng),進(jìn)行數(shù)數(shù)據(jù)處理的的綜合能力力。同時,對對于給定的的設(shè)計題目目,如何對對其進(jìn)行分分析,理清清思路,并并給出相應(yīng)應(yīng)的數(shù)學(xué)模模型,也是是一項很好好的考驗。通過對這個個課題的學(xué)學(xué)習(xí),我發(fā)發(fā)現(xiàn)Javva語言作作為一種新新興的編輯輯語言,優(yōu)優(yōu)勢很明顯顯,整個程程序的結(jié)構(gòu)構(gòu)很清晰,讓讓人一目了了然。
11、而且且,程序的的編輯、修修改、移植植性也很強(qiáng)強(qiáng),可以通通過對功能能模塊的添添加,增加加程序的實實用性,例例如查找、替換、打打印等等,這這些事今后后可以進(jìn)一一步研究發(fā)發(fā)展的方向向。通過對這個個課題的訓(xùn)訓(xùn)練,使我我基本掌握握了Javva編程的的基礎(chǔ)知識識,主體模模塊與功能能模塊的結(jié)結(jié)合技巧、方法,提提高了我的的自學(xué)能力力,也鍛煉煉了我分析析問題、解解決問題的的能力!此次課程設(shè)設(shè)計給我印印象最深的的就是,在在程序中非非常容易出出小的毛病病,而這些些小毛病往往往浪費(fèi)大大量的時間間而不得其其解,讓人人煩惱至極極。比如,在在主方法體體中忘記定定義一些變變量,導(dǎo)致致程序運(yùn)行行時程序也也報出大量量錯,有時時在
12、鼠標(biāo)隨隨便定位處處不小心按按下一個字字符,結(jié)果果運(yùn)行報錯錯后出現(xiàn)意意外錯誤,有時忘記記保存等等等此后讓讓我懂得寫寫程序一定定要仔細(xì),要要認(rèn)真寫清清每一行代代碼。附錄:主要要源程序imporrt jaava.aawt.*;imporrt jaava.aawt.eeventt.*;imporrt jaava.aawt.CColorr;imporrt jaava.iio.*;imporrt jaava.uutil.*;imporrt jaava.uutil.HashhSet;imporrt jaava.uutil.Set;imporrt jaava.aawt.ddatattranssfer.*;im
13、porrt jaava.aawt.eeventt.*;imporrt jaava.ttext.*;imporrt jaavax.swinng.*;imporrt jaavax.swinng.evvent.*;imporrt jaavax.swinng.teext.CCarett;imporrt jaavax.swinng.JFFramee;imporrt jaavax.swinng.JTTextPPane;imporrt jaavax.swinng.SwwingUUtiliitiess;imporrt jaavax.swinng.evvent.DocuumenttEvennt;imporrt
14、jaavax.swinng.evvent.DocuumenttListtenerr;imporrt jaavax.swinng.teext.BBadLoocatiionExxcepttion;imporrt jaavax.swinng.teext.DDocumment;imporrt jaavax.swinng.teext.SStylee;imporrt jaavax.swinng.teext.SStyleeConsstantts;imporrt jaavax.swinng.teext.SStyleedDoccumennt;imporrt jaavax.swinng.unndo.*;publi
15、ic cllass okpubliic sttaticc voiid maain(SStrinng argss)myfr fr=nnew mmyfr (我的的javaa編輯器);fr.seetSizze(6000,4000);/myyfr主窗窗體類/classs myffr exxtendds JFFramee impplemeents ActiionLiistenner Strinng sttr,sttrnexxt,paath,ffnamee; /部分變量量的聲明JPaneel maainpaane; JFileeChoooser chooose = neww JFiileChhooseer
16、(); /文文件對話框框Dialoog fiind,rreplaace; /fiind為查查找對話框框,repplacee對話框JTexttFielld fiindtxxt,reepltxxt; /finnd為查找找對話框的的輸入文本本區(qū),reeplacce對話框框的輸入文文本區(qū)Font newffont;JButtton ffindeenterr,repplb,bbut; /fiind為查查找對話框框,repplacee對話框的的確定按鈕鈕JLabeel sttate=new JLabbel(javaa編輯器-未命名名文檔); /狀態(tài)欄JTexttPanee txtt1; /主輸入入文本區(qū)F
17、ile newffiless;JPopuupMennu poopm; /彈出出菜單聲明明JMenuu m1,m2,mm3,m44,m5,m6; /各菜菜單項JMenuuItemm m611,m622,m266,m2771,m334,m551,m552,m553,m554,p_copyy,p_ccut,pp_passte,pp_dell,fonnt;int sstarttp,enndp,nnextttemp,newsstarttp,neewenddp; /查找替替換時所用用的臨時變變量JToollBar toollbar = neew JTToolBBar(); /工具條 privaate SS
18、et kkeywoords;privaate SSet cclassswordds;privaate SStylee keyyworddStylle;privaate SStylee claasswoordSttyle;privaate SStylee norrmalSStylee;myfr(Striing ssss) /構(gòu)造函函數(shù)開始superr(ssss);JMenuuBar mb=nnew JJMenuuBar();fnamee=nulll; /初始文文件名為空空 findeenterr=neww JBuuttonn(確定定);findeenterr.adddActiionLiisten
19、ner(tthis); /聲明對話話框中上確確定按鈕,并并注冊事件件replbb=neww JBuuttonn(確定定);replbb.adddActiionLiistenner(tthis);mainppane=(JPaanel)thiss.gettConttentPPane(); mainppane.setLLayouut(neew BoorderrLayoout(); txt1=new JTexxtPanne();txt1.getDDocumment().adddDoccumenntLissteneer(neew SyyntaxxHighhlighhter(txt11);txt1.add
20、MMouseeListtenerr(neww hanndlemmousee(thiis);/注冊冊鼠標(biāo)右擊擊事件txt1.setFFont(new Fontt(宋體體,Foont.PPLAINN,18);mainppane.add(txt11, BoorderrLayoout.CCENTEER); mainppane.add(Norrth,toollbar); mainppane.add(Souuth,statte);JScroollPaane ssll = neww JSccrolllPanee(); /創(chuàng)建建滾動條mainppane.add(Cennter, slll); ;sll.gge
21、tViiewpoort().addd(txtt1); /將滾滾動條裝入入文本區(qū)popm=new JPoppupMeenu(); /POOPMeuun 開始始p_coppy=neew JMMenuIItem(復(fù)制 );p_coppy.adddActtionLListeener(thiss);KeySttrokee keyycopyyp=KeeyStrroke.getKKeySttrokee(KeyyEvennt.VKK_C,EEventt.CTRRL_MAASK); p_coppy.seetAcccelerratorr(keyycopyyp); p_cutt=neww JMeenuIttem(剪
22、切 );p_cutt.adddActiionLiistenner(tthis);KeySttrokee keyycutpp=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_X,Evvent.CTRLL_MASSK); p_cutt.settAcceeleraator(keyccutp); p_passte=nnew JJMenuuItemm(粘貼貼 );p_passte.aaddAcctionnListtenerr(thiis);KeySttrokee keyypp=KKeySttrokee.gettKeySStrokke(KeeyEveent.VVK_V,
23、Evennt.CTTRL_MMASK); p_passte.ssetAccceleeratoor(keeypp); p_dell=neww JMeenuIttem(刪除 );p_dell.adddActiionLiistenner(tthis);KeySttrokee keyydelpp=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_DELEETE,00); p_dell.settAcceeleraator(keyddelp); popm.add(p_coopy);popm.add(p_cuut);popm.add(p_paaste);popm.add(p
24、_deel);txt1.add(popmm); /PPOPMeenu 結(jié)結(jié)束m1=neew JMMenu(文件(F);m1.seetMneemoniic(FF); /定義義快捷方式式JMenuuItemm m100=neww JMeenuIttem(新建 );m10.aaddAcctionnListtenerr(thiis); /注冊冊事件監(jiān)聽聽器KeySttrokee keyynew=KeySStrokke.geetKeyyStrooke(KKeyEvvent.VK_NN,Eveent.CCTRL_MASKK); /定義快快捷鍵m10.ssetAccceleeratoor(keeyneww)
25、; JMenuuItemm m111=neww JMeenuIttem(打開 );m11.aaddAcctionnListtenerr(thiis);KeySttrokee keyyopenn=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_O,Evvent.CTRLL_MASSK); m11.ssetAccceleeratoor(keeyopeen); JMenuuItemm m122=neww JMeenuIttem(保存 );m12.aaddAcctionnListtenerr(thiis);KeySttrokee keyysavee=KeyyStro
26、oke.ggetKeeyStrroke(KeyEEventt.VK_S,Evvent.CTRLL_MASSK); m12.ssetAccceleeratoor(keeysavve); JMenuuItemm m133=neww JMeenuIttem(另保存為為 );m13.aaddAcctionnListtenerr(thiis);JMenuuItemm m144=neww JMeenuIttem(退出 );m14.aaddAcctionnListtenerr(thiis);KeySttrokee keyyexitt=KeyyStrooke.ggetKeeyStrroke(KeyEEvent
27、t.VK_F4,EEventt.ALTT_MASSK); m14.ssetAccceleeratoor(keeyexiit); /m2=neew JMMenu(編輯(E);m2.seetMneemoniic(EE);JMenuuItemm m211=neww JMeenuIttem(復(fù)制 );m21.aaddAcctionnListtenerr(thiis);KeySttrokee keyycopyy=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_C,Evvent.CTRLL_MASSK); m21.ssetAccceleeratoor(keeycoppy
28、); JMenuuItemm m222=neww JMeenuIttem(剪切 );m22.aaddAcctionnListtenerr(thiis);KeySttrokee keyycut=KeySStrokke.geetKeyyStrooke(KKeyEvvent.VK_XX,Eveent.CCTRL_MASKK); m22.ssetAccceleeratoor(keeycutt); JMenuuItemm m233=neww JMeenuIttem(粘貼 );m23.aaddAcctionnListtenerr(thiis);KeySttrokee keyyp=KeeyStrroke.g
29、etKKeySttrokee(KeyyEvennt.VKK_V,EEventt.CTRRL_MAASK); m23.ssetAccceleeratoor(keeyp); JMenuuItemm m244=neww JMeenuIttem(刪除 );m24.aaddAcctionnListtenerr(thiis);KeySttrokee keyydel=KeySStrokke.geetKeyyStrooke(KKeyEvvent.VK_DDELETTE,0); m24.ssetAccceleeratoor(keeydell); JMenuuItemm m255=neww JMeenuIttem
30、(查找 );m25.aaddAcctionnListtenerr(thiis);KeySttrokee keyyfindd=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_F,Evvent.CTRLL_MASSK); m25.ssetAccceleeratoor(keeyfinnd); m26=nnew JJMenuuItemm(查找找下一個 );m26.aaddAcctionnListtenerr(thiis);KeySttrokee keyyfn=KKeySttrokee.gettKeySStrokke(KeeyEveent.VVK_F33,0); m2
31、6.ssetAccceleeratoor(keeyfn); m26.ssetEnnableed(faalse);JMenuuItemm m277=neww JMeenuIttem(替換 );m27.aaddAcctionnListtenerr(thiis);KeySttrokee keyyrepll=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_H,Evvent.CTRLL_MASSK); m27.ssetAccceleeratoor(keeyreppl); m271=new JMennuIteem(替替換下一個個);m271.setEEnablled(f
32、falsee);m271.addAActioonLissteneer(thhis);KeySttrokee keyyrepnn=KeyyStrooke.ggetKeeyStrroke(KeyEEventt.VK_F6,00); m271.setAAccellerattor(kkeyreepn); JMenuuItemm m288=neww JMeenuIttem(全選 );m28.aaddAcctionnListtenerr(thiis);KeySttrokee keyyall=KeySStrokke.geetKeyyStrooke(KKeyEvvent.VK_AA,Eveent.CCTRL_
33、MASKK); m28.ssetAccceleeratoor(keeyalll); JMenuuItemm m299=neww JMeenuIttem(日期/時時間 );m29.aaddAcctionnListtenerr(thiis);/m3=neew JMMenu(格式(O);m3.seetMneemoniic(OO);font=new JMennuIteem(字字體F);font.addAActioonLissteneer(thhis);JMenuuItemm m333=neww JMeenuIttem(字體顏色色 );m33.aaddAcctionnListtenerr(thiis);
34、/m5=neew JMMenu(視圖風(fēng)風(fēng)格(V);m5.seetMneemoniic(VV);m54=nnew JJMenuuItemm(狀態(tài)態(tài)欄 );m54.aaddAcctionnListtenerr(thiis);/m6=neew JMMenu(幫助(H);m6.seetMneemoniic(HH); m61=nnew JJMenuuItemm(幫助助主題 );m61.aaddAcctionnListtenerr(thiis);m62=nnew JJMenuuItemm(關(guān)于于 );m62.aaddAcctionnListtenerr(thiis);/添加各各項m1.addd(m110)
35、; m1.aadd(mm11); m1.add(m12); m11.addd(m133); mm1.adddSepparattor(); m11.addd(m144);m33.addd(fonnt);m2.addd(m221); m2.aadd(mm22); m2.add(m23); m22.addd(m244); mm2.adddSepparattor(); m22.addd(m255);m2.addd(m226); m2.aadd(mm27); m2.add(m2711); mm2.adddSepparattor(); m22.addd(m288);m2.addd(m229); m3.aa
36、dd(mm33); m5.add(m54); m66.addd(m611); m6.adddSepparattor(); m66.addd(m622); mmb.addd(m11); mmb.addd(m22); mmb.addd(m33); mb.addd(m55); mmb.addd(m66); tthis.setJJMenuuBar(mb); /設(shè)設(shè)置菜單欄欄setViisiblle(trrue);pack();show();this.addWWindoowLissteneer(neew xxxx(thhis);/構(gòu)構(gòu)造函數(shù)結(jié)結(jié)束/事事件處理/publiic vooid aactioon
37、Perrformmed(AActioonEveent pp)if(p.getAActioonCommmandd()=新建 ) /響應(yīng)菜菜單及工具具欄事件 fnamee=nulll; /置文件件名為空,便便于判斷文文件是否保保存過txt1.setTText();statee.settTextt( 我我的javva編輯器器-未命命名文檔);if(p.getAActioonCommmandd()=打開 )try if(thhis.cchoosse.APPPROVVE_OPPTIONN=thhis.cchoosse.shhowOppenDiialogg(thiis) path=thiss.chooos
38、e.getSSelecctedFFile().geetPatth(); fnamee=thiis.chhoosee.gettSeleecteddFilee().ggetNaame();File filee=neww Fille(paath);int fflenggth=(int)filee.lenngth(); FileRReadeer fRReadeer=neew FiileReeaderr(fille); char daata=nnew ccharflenngth; fReadder.rread(dataa,0,fflenggth); txt1.setTText(new Striing(d
39、data); statee.settTextt( 我我的javva編輯器器-+pathh+ 共共+fllengtth+字字節(jié));/狀態(tài)態(tài)欄統(tǒng)計文文件字節(jié)數(shù)數(shù)txt1.setCCarettPosiitionn(0);catchh(IOEExcepptionn e)if(p.getAActioonCommmandd()=保存 )if(fnname=nulll) /如果文文件名為空空,說明文文件未被創(chuàng)創(chuàng)建,彈出出另存為對對話框 othhersaave(); try File saveefilee=neww Fille(paath);saveffile.creaateNeewFille(); File
40、WWriteer fww=neww FilleWriiter(saveefilee); fw.wrrite(txt11.gettTextt(); fw.cllose(); catchh(IOEExcepptionn e)if(p.getAActioonCommmandd()=另保存存為 )otheersavve();if(p.getAActioonCommmandd()=退出 )exitt();/編輯/if(p.getAActioonCommmandd()=復(fù)制 ) y(); if(p.getAActioonCommmandd()=剪切 ) txtt1.cuut(); if(p.getAAct
41、ioonCommmandd()=粘貼 ) txtt1.paaste(); if(p.getAActioonCommmandd()=刪除 ) txt1.repllaceSSelecctionn();/if(p.getAActioonCommmandd()=查找 ) / 創(chuàng)建建查找對話話框;findd=neww Diaalog(thiss,查找找);JPaneel p11=neww JPaanel();JPaneel p22=neww JPaanel();findttxt=nnew JJTexttFielld(7);p1.addd(neew JLLabell(輸入入要查找字字符:);p1.addd
42、(fiindtxxt);p2.addd(fiindennter);find.add(Cennter,p1);find.add(Souuth,p2);find.setSSize(200,200);find.showw();if(p.getSSourcce()=finndentter) /點點擊查找對對話框的確確定按鈕后后的事件處處理if(fiindtxxt.geetTexxt().equaals() findd.dissposee();else if(!finddtxt.getTText().eqqualss() finnd.diisposse();str=ttxt1.getTText();st
43、arttp=sttr.inndexOOf(fiindtxxt.geetTexxt();endp=starrtp+ffindttxt.ggetTeext().lenngth();txt1.seleect(sstarttp,enndp);m26.ssetEnnableed(trrue);newenndp=eendp;/獲取這次次查找的終終點notfiindmeethodd();/if(p.getAActioonCommmandd()=查找下下一個 )nextttemp=neweendp; /獲取取上次查找找的終點做做為未查找找字符串的的起點Strinng sttralll=txtt1.geetTe
44、xxt();txt1.seleect(nnextttemp,straall.llengtth(); /選選中所有未未查找的字字符串strneext=ttxt1.getSSelecctedTText();newsttartpp=strrnextt.inddexOff(finndtxtt.gettTextt()+nextttempp;/在未未查找的字字符串里搜搜索對應(yīng)字字符的在TTXT1中中的位置newenndp=nnewsttartpp+finndtxtt.gettTextt().llengtth();txt1.seleect(nnewsttartpp,newwendpp); /找找到相應(yīng)文文本
45、,并選選擇notfiindmeethodd();/if(p.getAActioonCommmandd()=替換 )m2711.settEnabbled(truee);replaace=nnew DDialoog(thhis,替換); / 創(chuàng)建替替換對話框框;JPaneel p11=neww JPaanel();JPaneel p22=neww JPaanel();JPaneel p33=neww JPaanel();findttxt=nnew JJTexttFielld(7);replttxt=nnew JJTexttFielld(7);p1.addd(neew JLLabell(輸入入原始字
46、符符:);p1.addd(fiindtxxt);p2.addd(neew JLLabell(輸入入替換字符符:);p2.addd(reepltxxt);p3.addd(reeplb);replaace.aadd(Nortth,pp1);replaace.aadd(Centter,p2);replaace.aadd(Soutth,pp3);replaace.ssetSiize(2200,1150);replaace.sshow();if(p.getSSourcce()=repplb) /點點擊替換對對話框的確確定按鈕后后的事件處處理replaace.ddispoose();str=ttxt1.g
47、etTText();starttp=sttr.inndexOOf(fiindtxxt.geetTexxt();endp=starrtp+ffindttxt.ggetTeext().lenngth();txt1.seleect(sstarttp,enndp);txt1.repllaceSSelecctionn(reppltxtt.gettTextt();/*txtt1.reeplacceRannge(rreplttxt.ggetTeext(),staartp,endpp);*/newenndp=eendp; /獲取這次次替換的終終點/if(p.getAActioonCommmandd()=替換下
48、下一個)nextttempp=newwendpp; /獲獲取上次查查找的終點點做為未查查找字符串串的起點Strinng sttralll=txtt1.geetTexxt();txt1.seleect(nnextttemp,straall.llengtth(); /選選中所有未未查找的字字符串strneext=ttxt1.getSSelecctedTText();newsttartpp=strrnextt.inddexOff(finndtxtt.gettTextt()+nextttempp;/在未未查找的字字符串里搜搜索對應(yīng)字字符的在TTXT1中中的位置newenndp=nnewsttartpp
49、+finndtxtt.gettTextt().llengtth();txt1.seleect(nnewsttartpp,newwendpp); notfiindmeethodd();txt1.repllaceSSelecctionn(reppltxtt.gettTextt();/*txtt1.reeplacceRannge(rreplttxt.ggetTeext(),newwstarrtp,nnewenndp);/替換換字符*/if(p.getAActioonCommmandd()=全選 )txt11.sellectAAll(); if(p.getAActioonCommmandd()=日期/
50、時間 ) /用DATTE類插入入當(dāng)前日期期/時間,編編譯時會出出現(xiàn)說明txt11.settTextt(txtt1.geetTexxt()+Caleendarr.gettInsttancee().ggetTiime().toSStrinng();/格式/if(p.getSSourcce()=fonnt)/字體 neww MyFFont(); if(p.getAActioonCommmandd()=字體顏顏色 ) /字字體顏色JColoorChoooserr jCoolor=new JCollorChhooseer(); /調(diào)調(diào)用顏色面面板,設(shè)置置前景就可可更改字體體顏色Colorr fcoolo
51、r=txt11.gettForeegrouund(); txt1.setFForeggrounnd( jjColoor.shhowDiialogg(txtt1,選選擇字體顏顏色,ffcoloor);normaalStyyle = (SStyleedDoccumennt) ttxt1.getDDocumment().aaddSttyle(Keyywordd_Styyle, nulll);StyleeConsstantts.seetForregroound(normmalSttyle, fcoolor);/試圖風(fēng)風(fēng)格/if(p.getAActioonCommmandd()=狀態(tài)欄欄 ) /狀態(tài)態(tài)欄
52、的隱藏藏和顯視statte.seetVissiblee( !(statte.issVisiible() );/幫助/if(p.getAActioonCommmandd()=幫助主主題 )myheelp hhelp=new myheelp();help.setSSize(200,240);if(p.getAActioonCommmandd()=關(guān)于 ) JLabeel prromptt=neww JLaabel(歡迎使使用我的JJAVA編編輯器,JLabbel.CCENTEER);JOptiionPaane.sshowMMessaageDiialogg(nulll,prromptt,關(guān)于于我的J
53、AAVA編輯輯器,JJOptiionPaane.IINFORRMATIION_MMESSAAGE);publiic vooid ootherrsavee() /另存為為方法if(chhoosee.APPPROVEE_OPTTION=chooose.showwSaveeDiallog(tthis) path=chooose.ggetSeelecttedFiile().gettPathh(); newfiiles=new Filee(patth);statee.settTextt( 我我的javva編輯器器-+pathh);fnamee=chooose.getSSelecctedFFile().g
54、eetNamme();try newfiiles=new Filee(patth);newfiiles.creaateNeewFille();FileWWriteer fww=neww FilleWriiter(newffiless); fw.wrrite(txt11.gettTextt(); fw.cllose(); catcch(IOOExceeptioon e)publiic vooid nnotfiindmeethodd() /提示查查找不到的的方法nootfinndmetthodif(!ttxt1.getSSelecctedTText().eqqualss(finndtxtt.get
55、tTextt() txtt1.seetCarretPoositiion(00); /光標(biāo)返返回文件頭頭部JOptiionPaane.sshowMMessaageDiialogg(nulll,查查找不到對對應(yīng)的字符符!,查找錯誤誤,JOOptioonPanne.ERRROR_MESSSAGE);m26.ssetEnnableed(faalse); publiic vooid eexit() intt vallue;Strinng qq=返回, 退退出;valuee=JOpptionnPanee.shoowOpttionDDialoog(nuull, 你確定定退出嗎?請注意保保存文件!, 退出程序
56、序?, JOptiionPaane.DDEFAUULT_OOPTIOON, JJOptiionPaane.QQUESTTION_MESSSAGE,null, qq, qq0);if(vaalue=JOpptionnPanee.YESS_OPTTION)returrn;else if(vvaluee=JOOptioonPanne.NOO_OPTTION) Sysstem.exitt(0); publiic cllass MyFoont iimpleementts AcctionnListtenerr finaal JDDialoog foontDiialogg; finaal JTTextFFi
57、eldd tfFFont, tfSSize, tfSStylee; finaal innt foontSttyleCConstt = FFont.PLAIIN, FFont.BOLDD, Foont.IITALIIC, FFont.BOLDD + FFont.ITALLIC ; finaal JLList listtStylle, llistFFont, lisstSizze; JLabbel ssamplle; JPannel ppane11, paane2, panne3, panee4;/ 構(gòu)造造函數(shù)MyyFontt publlic MMyFonnt() fonntDiaalog = n
58、eew JDDialoog(myyfr.tthis, 字體體設(shè)置, truue); Conntainner ccon = fonntDiaalog.getCConteentPaane(); conn.settLayoout(nnew BBoxLaayoutt(conn, BooxLayyout.Y_AXXIS); panne1 = neww JPaanel(); panne2 = neww JPaanel(); panne3 = neww JPaanel(); panne4 = neww JPaanel(); Fonnt cuurrenntFonnt = txt11.gettFontt();
59、JLaabel lblFFont = neew JLLabell(字體體(F):); JLaabel lblSStylee = nnew JJLabeel(字字形(Y):); JLaabel lblSSize = neew JLLabell(大小小(S):); lbllStylle.seetHorrizonntalAAlignnmentt(SwiingCoonstaants.CENTTER); lbllSizee.settHoriizonttalAllignmment(SwinngConnstannts.CCENTEER); lbllFontt.settPrefferreedSizze(nee
60、w Diimenssion(91, 20); lbllStylle.seetPreeferrredSiize(nnew DDimennsionn(82, 20); lbllSizee.settPrefferreedSizze(neew Diimenssion(100, 20); tfFFont = neew JTTextFFieldd(10); tfFFont.setTText(currrentFFont.getFFontNName(); tfFFont.seleectAlll(); tfFFont.setPPrefeerreddSizee(neww Dimmensiion(2200, 20)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款合同印花稅稅率借款合同
- 營銷顧問服務(wù)合同協(xié)議書
- 工程招投標(biāo)與合同管理大學(xué)
- 高科技產(chǎn)品研發(fā)生產(chǎn)合同
- 涂層材料對主被動一體化熱防護(hù)效果影響的實驗研究
- 復(fù)雜電子對抗中的組網(wǎng)雷達(dá)功率分配與干擾智能識別及對抗研究
- 《動物的激素調(diào)節(jié)》課件
- 2025年西師新版七年級生物上冊階段測試試卷含答案
- 2025年中圖版九年級歷史下冊階段測試試卷
- 2025年浙教版七年級歷史下冊月考試卷
- 創(chuàng)新創(chuàng)業(yè)教育課程體系
- 包裝品質(zhì)彩盒外箱知識課件
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 頸復(fù)康腰痛寧產(chǎn)品知識課件
- 2024年低壓電工證理論考試題庫及答案
- 微電網(wǎng)市場調(diào)查研究報告
- 《民航服務(wù)溝通技巧》教案第14課民航服務(wù)人員上行溝通的技巧
- MT/T 538-1996煤鉆桿
- 小學(xué)六年級語文閱讀理解100篇(及答案)
- CB/T 467-1995法蘭青銅閘閥
- 氣功修煉十奧妙
評論
0/150
提交評論