版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、代碼編輯器的java實(shí)現(xiàn)摘 要如果我們把不同的程序開發(fā)人員比作三國(guó)演義中的各路諸侯大將的話,那么代碼編輯器絕對(duì)可以稱之我們手中的神兵利器。對(duì)于每個(gè)程序猿來說,內(nèi)心的深處都想有一把自己的“青龍偃月刀”和屬于自己的一個(gè)代碼編輯器。我也有這個(gè)想法,我也想自己寫一個(gè)代碼編輯器來滿足我的內(nèi)心深處。所以這次java的課程作業(yè)我選擇了這個(gè)題目!關(guān)鍵詞:java; 代碼編輯器; 關(guān)鍵字變色; 編譯和運(yùn)行 前 言通過一學(xué)期的java學(xué)習(xí),我對(duì)java的理論知識(shí)有了一些了解。但是,只有理論聯(lián)系實(shí)際才能更好的掌握理論,所以這次java課程設(shè)計(jì)我選擇了java程序編輯器這個(gè)課題,希望可以鍛煉自己的動(dòng)手能力。我上交給老
2、師您的代碼是我參考的網(wǎng)上的一個(gè)牛人寫的代碼,并在他的代碼上進(jìn)行了功能的增加,至于我增加了多少功能,我會(huì)論文的附錄中給出詳細(xì)的對(duì)比。 1. 軟件的定義編寫一個(gè)界面像windows系統(tǒng)的記事本的代碼編輯器,功能比記事本更強(qiáng)大(針對(duì)某一方面)具備以下功能: 打開、保存文件功能; 能夠識(shí)別java中的關(guān)鍵字并能將關(guān)鍵字以高亮的形式顯示出來; 能夠批量的刪除代碼中的注釋; 能通過按下按鈕調(diào)用dos窗口; 能編譯和運(yùn)行java程序; 能夠檢查括號(hào)是否匹配。 2. 開發(fā)環(huán)境ide: eclipsejdk: jdk-7u45-windows-x64os: windows 7 x643. 代碼的詳細(xì)說明主界面:
3、syntaxcolor.v4包中的demoframe.java文件,主界面就是一個(gè)frame,然后在上面加上一個(gè)菜單欄,一個(gè)工具欄和兩個(gè)panel,一個(gè)panel里面放著jtextpane,另一個(gè)里面放著一個(gè)幾個(gè)jlable,用來顯示當(dāng)前鼠標(biāo)是在第幾行,第幾列,該panel放在frame最下面。菜單欄 :總共有3個(gè)jmenu,一個(gè)是文件,一個(gè)是編輯,一個(gè)是幫助。3個(gè)菜單里面各有下拉菜單。文件jmenu有2個(gè)jmenuitem分別為openmenuitem、exitmenuitem,編輯jmenu有2個(gè)jmenuitem分別為cutmentitem、pastemenuitem,幫助jmenu有一
4、個(gè)jmenuitem是aboutmenuitem用來顯示代碼編輯器的相關(guān)的信息。工具欄:從左到右分別為打開文件、新建文件,保存、批量去除注釋、調(diào)用dos窗口、編譯執(zhí)行和運(yùn)行java程序、括號(hào)的匹配。下面詳細(xì)的介紹每個(gè)工具欄的按鈕打開文件按鈕: 此時(shí)選擇打開窗口可以看到的test.java程序。代碼的實(shí)現(xiàn):創(chuàng)建一個(gè)bufferedreader 類型的br來讀取從打開文件的對(duì)話框中選擇的文件,讀取到panel1中的jtextpane中。新建文件按鈕:說明:如果jtextpane中有字符的話(即代碼編輯區(qū)有字),先讓用戶保存,再新建一個(gè)新的jtextpane(但是我在實(shí)現(xiàn)的時(shí)候遇到了問題了,網(wǎng)上的文
5、本編輯器大部分是用jtextarea來實(shí)現(xiàn)的,而不是jtextpane來實(shí)現(xiàn)的,在jtextpane中沒有jtextarea里面的對(duì)應(yīng)的方法,而且我在網(wǎng)上沒有找到了好的解決方案,所以我的做法是把按下新建按鈕后把當(dāng)前jtextpane的清空。保存按鈕:代碼的實(shí)現(xiàn)定義一個(gè)bufferedwriter類型的bw和filewriter類型的fw通過bw把字符寫到fw對(duì)應(yīng)的文件中去。對(duì)應(yīng)代碼中的filesava()函數(shù)和filesavaas()函數(shù)。批量去除注釋代碼的實(shí)現(xiàn):是通過將當(dāng)前的文件保存到默認(rèn)的路徑中去,先將代碼中的注釋去除,通過將去除到注釋的代碼保存當(dāng)前文件的系統(tǒng)目錄下,再用打開文件操作來把去
6、除注釋的代碼重新讀入jtextpane中去。在文件的保存路徑下,會(huì)產(chǎn)生一個(gè)“文件名”+“.bak”的文件(該文件為沒有注釋的文件),這樣可以用來批量的刪除注釋,并保存在對(duì)應(yīng)文件名的.bak文件中dos窗口的調(diào)用通過組合使用java提供的runtime類和process類的方法實(shí)現(xiàn)在java中調(diào)用dos命令,因?yàn)槲易约涸诰帉慾ava的代碼的時(shí)候,寫好了要按win+r按鍵時(shí)還要出入cmd命令,我感覺特別的繁瑣,于是我寫了這個(gè)功能,通過一個(gè)按鈕就能調(diào)用出dos窗口,方便了用戶的使用。對(duì)應(yīng)于compile.java文件。編譯和運(yùn)行對(duì)于剛寫的代碼要進(jìn)行編譯和運(yùn)行的,我的策略是通過先對(duì)文件進(jìn)行保存,就在這
7、個(gè)時(shí)候來獲取到保存文件的路徑以及文件名等信息。然后就是通過通過組合使用java提供的runtime類和process類的方法實(shí)現(xiàn)在java中調(diào)用dos命令javac 文件名,編譯成功后就會(huì)自動(dòng)的運(yùn)行,會(huì)彈出一個(gè)frame來顯示指定的屏幕輸出,其實(shí)這個(gè)的實(shí)現(xiàn)是通過用戶本地的jdk來實(shí)現(xiàn)的,彈出的frame是把dos窗口的內(nèi)容讀入進(jìn)去在顯示出來!括號(hào)的匹配我們?cè)趯懘a的時(shí)候經(jīng)常會(huì)出現(xiàn)多一個(gè)多括號(hào)少一個(gè)括號(hào),有時(shí)候編譯器可能會(huì)給出一條我們不認(rèn)識(shí)的錯(cuò)誤,這個(gè)時(shí)候我們會(huì)花費(fèi)大量的時(shí)間來檢查錯(cuò)誤,所以我就想我的代碼編輯器中要有這個(gè)功能。在代碼的實(shí)現(xiàn)上是通過定義一個(gè)棧將是括號(hào)的左邊加入棧,如果掃描到括號(hào)的右
8、面就把對(duì)應(yīng)的括號(hào)出棧,到最后如果棧空,則總個(gè)括號(hào)匹配成功,如果棧不空則括號(hào)匹配不成功,并用紅色將其標(biāo)出。課程設(shè)計(jì)總結(jié)本次課程設(shè)計(jì),讓我獲益匪淺,不僅更深入的了解java這門學(xué)科,更使自己有了繼續(xù)探索的興趣。對(duì)于個(gè)人而言,在程序設(shè)計(jì)的過程中,我深感“認(rèn)真嚴(yán)謹(jǐn)”這個(gè)詞的重要性,一點(diǎn)點(diǎn)小的馬虎,便會(huì)導(dǎo)致整個(gè)程序不能正常運(yùn)行。在今后的學(xué)習(xí)中,我定將“認(rèn)真嚴(yán)謹(jǐn)時(shí)刻作為自的謹(jǐn)言。與此同時(shí),本小組成員的互幫互助,讓我體會(huì)到了團(tuán)結(jié)的力量,而更讓人難以忘懷的是在熱烈討論問題時(shí),那激情橫溢的場(chǎng)面??傊?,此次課程設(shè)計(jì)在我的學(xué)生生涯中啟上了至關(guān)重要的作用。最后,真誠(chéng)的感謝汪世元和我們機(jī)器人實(shí)驗(yàn)室的學(xué)長(zhǎng)和學(xué)姐們的幫助。
9、選題的時(shí)候,我一開始也不知道要寫什么好,想了好久后決定做一個(gè)代碼編輯器,因?yàn)槲覀兤匠N覀冊(cè)谟么a編輯器的時(shí)候,經(jīng)常覺得代碼的編輯器沒有按照自己的習(xí)慣,覺得很變扭,再給加上覺得能做出一個(gè)代碼編輯器很牛,也想在自己的大學(xué)里面能做出一個(gè)拿的出手的小程序,在同學(xué)們之間能炫耀一下,在網(wǎng)上也看到很多網(wǎng)友做了很多不錯(cuò)的小程序,然后放到自己的博客空間上,然后會(huì)有很多人在下面評(píng)價(jià)說,樓主好牛!為了滿足我自己的小的虛榮心,我就選擇了一個(gè)比較難的(我個(gè)人認(rèn)為的)的代碼編輯器。在編寫代碼編輯器的過程中,我學(xué)到了很多東西,由于這部分老師上課講的不多,只能靠自己的從網(wǎng)上一點(diǎn)一點(diǎn)的自學(xué),一開始遇到了很多困難,很多東西都看不
10、懂,而且也沒有人跟你講。我有一段時(shí)間萌發(fā)了換個(gè)簡(jiǎn)單點(diǎn)的題目,但是后來想做一個(gè)在同學(xué)中拿的出手的小程序,于是我克服了困難。下面我來講下我在編寫程序時(shí)遇到的問題,開始我上網(wǎng)看了很多文本編輯器,它們大部分是用jtextarea來實(shí)現(xiàn)的,而且它們都沒有實(shí)現(xiàn)關(guān)鍵字的變色,后來為了實(shí)現(xiàn)關(guān)鍵字變色的這個(gè)難題,我上網(wǎng)找了很久,就找到了一個(gè)人用java實(shí)現(xiàn)了,他使用的是jtextpane并非我們?cè)诰W(wǎng)上常見的jtextarea,后來查閱了很多資料后才得知jtextarea是什么沒有實(shí)現(xiàn)關(guān)鍵字變色的(在jtextarea中沒有辦法實(shí)現(xiàn)一部分字體以特殊的顏色顯示出來),后來我就采用了jtextpane。就在我采用了j
11、textpane繼續(xù)往下寫的時(shí)候遇到了困難第一個(gè)困難是我jtextpane沒有提供像jtextarea中獲取行號(hào)和列號(hào)的對(duì)應(yīng)函數(shù)。為了顯示行號(hào)與列號(hào),我又上網(wǎng)查資料,自己寫了getrow()和getcolumn()函數(shù)來返回當(dāng)前光標(biāo)對(duì)應(yīng)的行數(shù)和列數(shù)。我的這個(gè)小程序在對(duì)文字的處理方面可能很不如很多的網(wǎng)上可以搜索到的文本編輯器,因?yàn)榇a是我一個(gè)人寫的,在加上期末考試的臨近,時(shí)間越來越緊張,在加網(wǎng)上對(duì)jtextpane的資料少于jtextarea的,所以在這個(gè)地方我做的不是很好。為了實(shí)現(xiàn)主要的功能我放棄了對(duì)一些常規(guī)的記事本的替換等操作。我想了一下如果一個(gè)代碼編輯器不能編輯那怎么能叫代碼編輯器,后來我想到可以利用本機(jī)的jdk來做一個(gè)假的編譯器,上面有編譯和運(yùn)行的按鈕,但在實(shí)現(xiàn)是利用用戶自己的本機(jī)安裝jdk來編譯源代碼。由于我個(gè)人的水平有限和時(shí)間有限,代碼中肯定會(huì)有一些bug。我會(huì)在后來的時(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度曹瑞與張麗離婚協(xié)議中子女撫養(yǎng)及生活費(fèi)用協(xié)議3篇
- 2025年度家禽飼料原料采購(gòu)與家禽買賣合同書3篇
- 2024版鐵塔公司基站用地租賃協(xié)議樣本一
- 2025年度醫(yī)療器械展承辦合同4篇
- 2024庭院立體綠化設(shè)計(jì)與施工合同3篇
- 2025年P(guān)VC消防管道設(shè)備采購(gòu)銷售專項(xiàng)合同3篇
- 2025年金麗麻布項(xiàng)目投資可行性研究分析報(bào)告
- 教案資源:小熊的彩虹滑梯課件公開課教學(xué)設(shè)計(jì)資料
- 2025年安徽通 用生物系統(tǒng)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年度個(gè)人公司資產(chǎn)剝離合同范本:評(píng)估與定價(jià)策略4篇
- 細(xì)胞庫(kù)建設(shè)與標(biāo)準(zhǔn)制定-洞察分析
- 2024年國(guó)家公務(wù)員錄用考試公共基礎(chǔ)知識(shí)復(fù)習(xí)題庫(kù)2500題及答案
- DB3309T 98-2023 登步黃金瓜生產(chǎn)技術(shù)規(guī)程
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- DBJ41-T 108-2011 鋼絲網(wǎng)架水泥膨脹珍珠巖夾芯板隔墻應(yīng)用技術(shù)規(guī)程
- 2025年學(xué)長(zhǎng)引領(lǐng)的讀書會(huì)定期活動(dòng)合同
- 表內(nèi)乘除法口算l練習(xí)題1200道a4打印
- 《EICC培訓(xùn)講義》課件
- 2025年四川省政府直屬事業(yè)單位招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024年物業(yè)公司服務(wù)質(zhì)量保證合同條款
- 文言文閱讀之理解實(shí)詞含義(講義)-2025年中考語文專項(xiàng)復(fù)習(xí)
評(píng)論
0/150
提交評(píng)論