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