《Java第三次作業(yè)-《文本編輯器》》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java第三次作業(yè)-《文本編輯器》(23頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJava第三次作業(yè)-文本編輯器Java第三次作業(yè)-文本編輯器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è)方面: 菜單欄中有“文件”,“編輯”,“字體”三個(gè)主菜單。 “文件”菜單有“
3、新建”,“打開”,“保存”三個(gè)菜單項(xiàng):分別用于新建文件,打開文件,保存文件。 “編輯”菜單中有 “復(fù)制”“剪切”“粘貼”“查找”“替換”五個(gè)菜單項(xiàng):用于實(shí)現(xiàn)復(fù)制所選文字,剪切所選文字,粘貼文字,查找,替換等功能。 “字體”中有“格式”一個(gè)菜單項(xiàng):用來控制文本框中文本的字體類型功能; 軟件功能架構(gòu)圖:設(shè)置熱鍵格式替換查找粘貼剪切復(fù)制新建打開保存文件編輯字體菜單項(xiàng)文本編輯器3. 論述界面設(shè)計(jì)過程,指出其設(shè)計(jì)上的創(chuàng)意及組件的布局策略。這個(gè)框架主要運(yùn)用盒子布局對象和grid布局對象操作。對于文本編輯器的菜單組件如下。“文件”菜單里: “編輯”菜單里 “字體”菜單里 4. 論述程序邏輯的實(shí)現(xiàn),包括類的設(shè)
4、計(jì)、對象的協(xié)作過程等,必要時(shí)加以各種圖形和表格輔助論述。不得以粘貼代碼的方式代替設(shè)計(jì)部分。 首先,自定義一個(gè)editor類,該類繼承了JFrame類和ActionListener、ItemListener接口。在主類的主方法中,用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)
5、視器,在editor中重寫public void actionPerformed(ActionEvent e)方法。由于添加了ActionListener監(jiān)視器的菜單項(xiàng)很多,當(dāng)它們被點(diǎn)擊時(shí)都會(huì)觸發(fā)系統(tǒng)自動(dòng)生成ActionEvent對象,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)行不同的事件源不同的處理方法。
6、自定義newfile()、openfile()、savefile()方法,對應(yīng)“新建”、“打開”、“保存”三個(gè)事件源的處理。在openfile()中,新建一個(gè)文件對話窗口showOpenDialog,建立一個(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
7、。從而達(dá)到清理文本區(qū)的效果。對應(yīng)“復(fù)制”、“粘貼”、“剪切”菜單項(xiàng),添加調(diào)用文本區(qū)的copy()、paste()、cut()方法,把文本區(qū)的內(nèi)容復(fù)制到系統(tǒng)粘貼板,把粘貼板的內(nèi)容粘貼到文本區(qū)。事件源是“查找”菜單項(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()、
8、end()方法,得到文本區(qū)字符串中與模式對象匹配的子字符串序列的開始位置和終止位置。文本區(qū)再調(diào)用select()方法把文本區(qū)的子字符串顯示出來。倘若沒有找到要查找的內(nèi)容,則會(huì)彈出一個(gè)警告窗口。點(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ù)是用戶輸入的替換后的字符串、子字符串的開始位置、子字符串的終止
9、位置。倘若在文本區(qū)中沒有找到要替換前的文本內(nèi)容,那么將彈出一個(gè)警告窗口?!白煮w”菜單項(xiàng)是個(gè)下拉列表,添加ItemListener監(jiān)視器,用GraphicsEnvironment 對象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è)類 -