《Java第三次作業(yè)-《文本編輯器》》由會員分享,可在線閱讀,更多相關(guān)《Java第三次作業(yè)-《文本編輯器》(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.
------------------------------------------author
------------------------------------------date
Java第三次作業(yè)-《文本編輯器》
Java第三次作業(yè)-《文本編輯器》
《Java語言》課程期末作業(yè)
題 目 第6題: 文本編輯器
2、
學(xué) 院 計算機學(xué)院
專 業(yè) 網(wǎng)絡(luò)工程
班 別 13級(3 )班
學(xué) 號
姓 名
2015年06月17日
一、課程題目
制作一個簡單的文本編輯器,交互性要求:【最大選題人數(shù):5】
(1) 可輸入文字(僅要求英文及標(biāo)點符號)
(2) 實現(xiàn)一些常用的編輯功能:如復(fù)制和粘貼,查找和替換,首字母自動大寫,拼寫自動更正……
(3) 可打開并顯示TXT文件,并且可以將編輯結(jié)果保存為TXT文件
二、題
3、目分析與設(shè)計
1. 注明所使用的開發(fā)環(huán)境(Eclipse、NetBeans,JBuilder)。
開發(fā)環(huán)境:Eclipse
2. 論述題目的需求。給出軟件功能架構(gòu)圖。
本題目要求實現(xiàn)類似于一個記事本的文本編輯器功能。要能夠輸入文字,能夠?qū)崿F(xiàn)一些常用的編輯功能,可打開并顯示TXT文件,并且可以將編輯結(jié)果保存為TXT文件。本程序要構(gòu)建的記事本程序參照了Windows操作系統(tǒng)的記事本工具,其功能有以下幾個方面:
① 菜單欄中有“文件”,“編輯”,“字體”三個主菜單。
② “文件”菜單有“新建”,“打開”,“保存”三個菜單項:分別用
4、于新建文件,打開文件,保存文件。
③ “編輯”菜單中有 “復(fù)制”“剪切”“粘貼”“查找”“替換”五個菜單項:用于實現(xiàn)復(fù)制所選文字,剪切所選文字,粘貼文字,查找,替換等功能。
④ “字體”中有“格式”一個菜單項:用來控制文本框中文本的字體類型功能;
軟件功能架構(gòu)圖:
設(shè)置熱鍵
格式
替換
查找
粘貼
剪切
復(fù)制
新建
打開
保存
文件
編輯
字體
菜單項
文本編輯器
3. 論述界面設(shè)計過程,指出其設(shè)計上的創(chuàng)意及組件的布局策略。
這個框架主要運用盒子布局對象和grid布局對象操作。對于文本編輯器
5、的菜單組件如下。
“文件”菜單里:
“編輯”菜單里 “字體”菜單里
4. 論述程序邏輯的實現(xiàn),包括類的設(shè)計、對象的協(xié)作過程等,必要時加以各種圖形和表格輔助論述。不得以粘貼代碼的方式代替設(shè)計部分。
首先,自定義一個editor類,該類繼承了JFrame類和ActionListener、ItemListener接口。在主類的主方法中,用editor創(chuàng)建一個對象bianji。
在editor的構(gòu)造方法中設(shè)計好第一個界面的布局和組件。設(shè)計一個菜單條組件,添加“
6、文件”、“編輯”、“格式”三個菜單,“文件”菜單下又添加“新建”、“打開”、“保存”菜單項;在“編輯”菜單下又添加“復(fù)制”、“粘貼”、“剪切”、“查找”、“替換”菜單項;在“格式”下又添加“字體”菜單項。所有菜單項都添加ActionListener監(jiān)視器,在editor中重寫public void actionPerformed(ActionEvent e)方法。由于添加了ActionListener監(jiān)視器的菜單項很多,當(dāng)它們被點擊時都會觸發(fā)系統(tǒng)自動生成ActionEvent對象,event對象會自動調(diào)用editor里面的actionPerformed方法,對觸發(fā)進行反應(yīng)處理,為了能對不同的菜
7、單項點擊有不同的反應(yīng),那么要在actionPerformed方法中對事件源進行區(qū)分判斷,從而不同的事件源有不同的反應(yīng),所以在actionPerformed中用e.getSource對事件源進行判斷,用if else結(jié)構(gòu)進行不同的事件源不同的處理方法。
自定義newfile()、openfile()、savefile()方法,對應(yīng)“新建”、“打開”、“保存”三個事件源的處理。
在openfile()中,新建一個文件對話窗口showOpenDialog,建立一個文件字節(jié)輸入流和緩沖輸入流,緩沖輸入流按行讀取文件內(nèi)容,然后添加到文本區(qū)中。
在savefile()中,新建一個文件對話框showS
8、aveDialog,建立一個文件字節(jié)輸出流和緩沖輸出流,把文本區(qū)的字符串寫到用戶選擇的文件中。
在newfile()方法中,先調(diào)用savefile()方法,把用戶當(dāng)前正在編輯的文本保存好先。用戶保存后再讓文本區(qū)組件調(diào)用setText()方法把文本內(nèi)容設(shè)置為null。從而達到清理文本區(qū)的效果。
對應(yīng)“復(fù)制”、“粘貼”、“剪切”菜單項,添加調(diào)用文本區(qū)的copy()、paste()、cut()方法,把文本區(qū)的內(nèi)容復(fù)制到系統(tǒng)粘貼板,把粘貼板的內(nèi)容粘貼到文本區(qū)。
事件源是“查找”菜單項時,新建一個窗口,新窗口添加“查找”按鈕,和一個文本框,用來輸入要查找的內(nèi)容。按鈕添加ActionListener
9、監(jiān)視器。
點擊“查找”按鈕后,用戶在文本框輸入文本,文本框調(diào)用getText()方法讀取字符串作為模式對象,建立一個匹配對象,文本區(qū)調(diào)用getText()方法得到字符串,匹配對象調(diào)用find()方法在文本區(qū)字符串中查找模式對象中的字符串,找到后,匹配對象再調(diào)用start()、end()方法,得到文本區(qū)字符串中與模式對象匹配的子字符串序列的開始位置和終止位置。文本區(qū)再調(diào)用select()方法把文本區(qū)的子字符串顯示出來。倘若沒有找到要查找的內(nèi)容,則會彈出一個警告窗口。
點擊“替換”菜單項后,新建一個新窗口,添加“替換”按鈕和兩個文本框,一個用來輸入替換前的內(nèi)容,一個用來輸入替換后的內(nèi)容。當(dāng)用戶
10、在文本框中輸入替換前的內(nèi)容,該內(nèi)容的字符串作為模式對象,建立一個匹配對象,匹配對象調(diào)用find()方法,找到文本區(qū)中的子字符串,然后文本區(qū)再調(diào)用replaceRange()方法替換文本,replaceRange()中參數(shù)是用戶輸入的替換后的字符串、子字符串的開始位置、子字符串的終止位置。倘若在文本區(qū)中沒有找到要替換前的文本內(nèi)容,那么將彈出一個警告窗口。
“字體”菜單項是個下拉列表,添加ItemListener監(jiān)視器,用GraphicsEnvironment 對象ge=GraphicsEnvironment.getLocalGraphicsEnvironment();得到電腦系統(tǒng)里的所有字體類
11、型,ge對象調(diào)用方法getAvailableFontFamilyNames()得到字體類型的名字,并把名字存放到字符串?dāng)?shù)組中,然后下拉列表組件添加字符串?dāng)?shù)組中的字體類型名字。當(dāng)用戶在下拉列表中選擇了一個字體時,觸發(fā)ItemEvent事件對象,事件對象通知監(jiān)視器,監(jiān)視器實現(xiàn)接口回調(diào),接口中自定義了方法,設(shè)置一個字體對象,該對象是用戶選擇的字體類型,然后文本區(qū)調(diào)用setFont方法把文本區(qū)的內(nèi)容都設(shè)置成該字體類型。
三、測試分析
1.打開text.txt文件
2.點新建,再寫入“你好,廣東工業(yè)大學(xué)”,如圖
3.復(fù)制粘貼測試
4.查找測試
5.替換
6.字體轉(zhuǎn)換
附錄:源代碼
源代碼7個包,2個類
--------------------------------------------------