




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 計算機工程學院課程設計報告設計名稱: 面向對象課程設計 選題名稱: 文本編輯器的設計與實現(xiàn) 姓 名: 學 號: 專業(yè)班級: d軟件081 系 (院): 計算機工程學院 設計時間: 2010.6.142010.6.27 設計地點: 軟件實驗室、教室 成績:指導教師評語: 簽名: 年 月 日1課程設計目的面向對象程序設計是一門實踐性很強的計算機專業(yè)基礎課程,課程設計是學習完該課程后進行的一次較全面的綜合練習。其目的在于通過實踐加深學生對面向對象程序設計的理論、方法和基礎知識的理解,掌握使用java語言進行面向對象設計的基本方法,提高運用面向對象知識分析實際問題、解決實際問題的能力,提高學生的應用
2、能力。2課程設計任務與要求:2.1文本編輯器的設計與實現(xiàn) 設計一個類似于windows記事本(notepad)的java程序??梢源蜷_、新建、保存一個文本文件;對選中的文本進行各種編輯操作(設置字體、字號、字型、對齊方式、背景、前景色、復制、粘貼、剪切、查找、替換等);在文本中能夠插入對象。2.2設計要求:課程設計可選用eclipse、jbuilder、netbeans等作為開發(fā)平臺以提高開發(fā)效率,通過資料查閱和學習盡可能熟練掌握其中一種集成開發(fā)環(huán)境。認真完成需求分析,建議采用uml建模技術進行系統(tǒng)的分析設計,在畫出系統(tǒng)用例圖和類圖,并將uml圖復制到設計報告中。認真按時完成課程設計報告,課程
3、設計報告內容包括:課程設計目的、設計任務與要求、設計說明書、設計成果和設計心得五個部分,具體要求見設計報告模板。通過這次設計,要求掌握以下內容:1) 面向對象技術中的繼承與多態(tài)(重載和覆蓋)機制、各種修飾符的使用2) 類、包、接口的定義與使用3) 常用工具類與算法的實現(xiàn)(數(shù)組、向量、字符串、鏈表)4) java.awt、javax.swing中常用標準gui組件及相應的事件處理5) java的異常處理機制6) java的數(shù)據(jù)庫連接技術7) java的多線程技術與動畫制作8) java的網(wǎng)絡編程3課程設計說明書1、需求分析簡單文本編輯器提供給用戶基本的純文本編輯功能,能夠將用戶錄入的文本存儲到本
4、地磁盤中。能夠讀取磁盤中現(xiàn)有的純文本文件,以及方便用戶進行需要的編輯功能。文件操作能夠實現(xiàn)新建、保存、打開文檔等,編輯操作能過實現(xiàn)文本的剪貼、復制、粘貼等,格式操作能過實現(xiàn)字體設置、背景等,幫助操作能夠實現(xiàn)關于主題的查看等功能2、概要設計(一)其基本功能包括:1)基本的文本操作功能。包括新建,保存,打開,保存。2)基本的編輯功能。包括復制,剪貼,粘貼。3)基本的格式功能,背景。4)簡單的幫助,關于主題。(二)主要的組件包括:1) 基本的frame框架;2) 菜單;3) 打開文件對話框;4) 保存文件對話框;5) 顏色對話框;6) choice下拉列表,運來實現(xiàn)字體設置;7) 簡單的幫助框架。(
5、三)設計示意圖建立基本框架添加編輯區(qū)添加菜單添加對話框完善菜單系統(tǒng)建立下拉列表編輯文字建立框架實現(xiàn)簡單幫助3、詳細設計1) 文件打開與保存對話框filedialog_save=new filedialog(this,保存文件對話框,filedialog.save);filedialog_save.setvisible(false);filedialog_load=new filedialog(this,保存文件對話框,filedialog.load);filedialog_load.setvisible(false);filedialog_save.addwindowlistener(new
6、windowadapter()public void windowclosing(windowevent e)filedialog_save.setvisible(false););filedialog_load.addwindowlistener(new windowadapter()public void windowclosing(windowevent e)filedialog_load.setvisible(false); );public void actionperformed(actionevent e)if(e.getsource()=itemsave)filedialog_
7、save.setvisible(true);if(filedialog_save.getfile()!=null)try file file=new file(filedialog_save.getdirectory(), filedialog_save.getfile(); tofile=new filewriter(file); out=new bufferedwriter(tofile); out.write(area.gettext(),0,(area.gettext().length(); out.close(); tofile.close();catch(ioexception e
8、1) else if(e.getsource()=itemload)filedialog_load.setvisible(true);area.settext(null);string s;if(filedialog_load.getfile()!=null)tryfile file=new file(filedialog_load.getdirectory(), filedialog_load.getfile(); file_reader=new filereader(file); in=new bufferedreader(file_reader); while(s=in.readline
9、()!=null) area.append(s+n); in.close(); file_reader.close();catch(ioexception e1) 文本編輯器的保存和打開功能的實現(xiàn)用文件對話框及輸入輸出流來完成。先建立打開和保存對話框,在public void actionperformed(actionevent e)里分別用filewriter()和filereader()方法實現(xiàn)保存和打開。2) 調用顏色對話框else if(e.getsource()=item5) color newcolor=jcolorchooser.showdialog(this,調色板,area
10、.getbackground(); if(newcolor!=null) area.setbackground(newcolor); 文本編輯器要實現(xiàn)背景功能可以用javax.swing包中的jcolorchooser類的靜態(tài)方法。pubic static color showdialog(component,string title,color initialcolor),其中參數(shù)component指定對話框所依賴的組件,即文本編輯器中的文本區(qū)area,title指定對話框的標題“調色板”,initialcolor指定對話框返回的初始顏色,即對話框消失后,返回默認值。3) 建立choice下
11、拉列表實現(xiàn)對字體的設置choice list;graphicsenvironment ge=graphicsenvironment.getlocalgraphicsenvironment(); string fontname=ge.getavailablefontfamilynames();public void itemstatechanged(itemevent e)string name=list.getselecteditem();font f=new font(name,font.plain,15);area.setfont(f);文本編輯器要實現(xiàn)對字體的設置,我選用了graphic
12、senvironment對象調用string getavailablefontfamilynames()方法,該方法可以獲取計算機上所有可用的字體名稱,并存放到字符串數(shù)組中。4)字形,字體大小部分else if(e.getsource()=item8) /設置字形(常規(guī),傾斜,加粗)font font=area.getfont(); int style=font.getstyle();style=style0; area.setfont(new font(,style,font.getsize();else if(e.getsource()=item9)font font=area.getfo
13、nt(); int style=font.getstyle();style=style2; area.setfont(new font(,style,font.getsize();else if(e.getsource()=item10)font font=area.getfont();int style=font.getstyle();style=style1; area.setfont(new font(,style,font.getsize();else if(e.getsource()=item11) /設置字體大小font font=area.getfont();int style=
14、font.getstyle();area.setfont(new font(font.getname(),style,12);else if(e.getsource()=item12)font font=area.getfont();int style=font.getstyle(); area.setfont(new font(font.getname(),style,24);else if(e.getsource()=item13)font font=area.getfont();int style=font.getstyle(); area.setfont(new font(font.g
15、etname(),style,36);5)剪切,復制,粘貼部分public void changedupdate(documentevent e) string s=area.gettext();public void removeupdate(documentevent e)changedupdate(e);public void insertupdate(documentevent e)changedupdate(e);public void actionperformed(actionevent e) else if(e.getsource()=item2) area.cut();els
16、e if(e.getsource()=item3)area.copy();else if(e.getsource()=item4)area.paste(); 文本編輯器中關于剪切,復制,粘貼功能的實現(xiàn)我選用處理jtextarea的documentevent事件,通過area.cut(),area.copy(),area.paste()方法,點擊“編輯”中相應菜單項可以選擇將文本區(qū)中選中的內容剪切,復制,粘貼。6) 幫助中關于主題部分else if(e.getsource()=item6)zhuti zt=new zhuti();class zhuti extends frame impleme
17、nts actionlistenerbutton btn;label lab;zhuti()setlayout(null);btn=new button(確定); lab=new label(這是一個簡單的文本編輯器!);add(btn);add(lab);btn.addactionlistener(this);setbounds(200,200,250,150);setvisible(true);lab.setbounds(20 ,60,220,30);lab.setfont(new font(楷體,font.bold,16);lab.setbackground(color.cyan);bt
18、n.setbounds(100,100,50,30);btn.setbackground(color.cyan);public void actionperformed(actionevent e)if(e.getsource()=btn)dispose(); 對于幫助中關于主題部分的實現(xiàn),我另構建了一個frame框架,主要是由一個標簽及一個按鈕構成,由標簽輸出“這是一個簡單的文本編輯器!”,按鈕用dispose()方法實現(xiàn)退出功能。7)類圖 4課程設計成果4、調試分析(1)關于打開和保存我運用了文件對話框, filedialog_save和filedialog_load以及文件輸入輸出流來實
19、現(xiàn),新建功能我選用了area.settext(null)方法.(2)對于剪貼,粘貼,復制的實現(xiàn)則用public void removeupdate(documentevent e)及 public void insertupdate(documentevent e).(3)背景的運用也是調用了顏色對話框,需引用import javax.swing.jcolorchooser包用 color newcolor=jcolorchooser.showdialog(this,調色板,area.getbackground()方法;(4)至于字體功能的實現(xiàn),則是先創(chuàng)建一個下拉列表choice list,再
20、實現(xiàn)對它的監(jiān)聽 list.additemlistener(this), 最后用public void itemstatechanged(itemevent e)方法實現(xiàn),需注意的是這種方法的實現(xiàn)只對javax.swing包中的組件有效,對于java.awt包中的組件,系統(tǒng)則是采取默認的字體名稱.5、用戶使用說明軟硬件要求:軟件方面:java開發(fā)環(huán)境硬件方面:jdk軟件抑或是eclipse軟件對硬件不是有很高的要求。6、測試結果圖1:文本編輯器的運行結果:圖2文本編輯器中的菜單:圖3:字體選擇下拉列表圖4:文本編輯器文件對話框(保存文件對話框):圖5:選擇背景顏色對話框:圖6:簡單的幫助對話框:
21、附錄(程序代碼)import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.jcolorchooser;import javax.swing.*;import javax.swing.event.*;class window extends frame implements actionlistener,itemlistener,documentlistenerfiledialog filedialog_save,filedialog_load;menubar menubar;menu menu1,
22、menu2,menu3,menu4,menu5,menu6;menuitem itemsave,itemload,item1,item2,item3,item4,item5,item6,item7,item8,item9,item10,item11,item12,item13,item14,item15;choice list;jtextarea area;bufferedreader in;filereader file_reader;bufferedwriter out;filewriter tofile;jscrollpane scrollpane;window(string s) su
23、per(s);setsize(600,400);list=new choice();area=new jtextarea();setvisible(true);graphicsenvironment ge=graphicsenvironment.getlocalgraphicsenvironment(); string fontname=ge.getavailablefontfamilynames(); for(int i=0;ifontname.length;i+) list.add(fontnamei);add(list,north);add(area,center);list.addit
24、emlistener(this); validate();menubar=new menubar();menu1=new menu(文件);menu2=new menu(編輯);menu3=new menu(格式);menu4=new menu(幫助);menu5=new menu(字形);menu6=new menu(字體大小);itemsave=new menuitem(保存);itemload=new menuitem(打開);item1=new menuitem(新建);item2=new menuitem(剪切);item3=new menuitem(復制);item4=new me
25、nuitem(粘貼);item5=new menuitem(背景);item6=new menuitem(關于主題);item7=new menuitem(退出);item8=new menuitem(常規(guī));item9=new menuitem(傾斜);item10=new menuitem(加粗);item11=new menuitem(12);item12=new menuitem(24);item13=new menuitem(36);item14=new menuitem(查找);item15-new menuitem(替換);itemsave.addactionlistener(t
26、his);itemload.addactionlistener(this);item1.addactionlistener(this);item2.addactionlistener(this);item3.addactionlistener(this);item4.addactionlistener(this);item5.addactionlistener(this);item6.addactionlistener(this);item7.addactionlistener(this);item8.addactionlistener(this);item9.addactionlistene
27、r(this);item10.addactionlistener(this);item11.addactionlistener(this); item12.addactionlistener(this);item13.addactionlistener(this);item14.addactionlistener(this);item15.addactionlistener(this);(area.getdocument().adddocumentlistener(this);menu1.add(item1);menu1.addseparator();menu1.add(itemsave);m
28、enu1.addseparator();menu1.add(itemload);menu1.addseparator();menu1.add(item7);menu2.add(item2);menu2.addseparator();menu2.add(item3);menu2.addseparator();menu2.add(item4);menu2.addseparator();menu2.add(item14);menu2.addseparator();menu2.add(item15);menu3.add(item5);menu3.addseparator();menu3.add(men
29、u5);menu3.addseparator();menu3.add(menu6);menu4.add(item6);menu5.add(item8);menu5.addseparator();menu5.add(item9);menu5.addseparator();menu5.add(item10);menu6.add(item11);menu6.addseparator();menu6.add(item12);menu6.addseparator();menu6.add(item13);menubar.add(menu1);menubar.add(menu2);menubar.add(m
30、enu3);menubar.add(menu4);setmenubar(menubar);filedialog_save=new filedialog(this,保存文件對話框,filedialog.save);filedialog_save.setvisible(false);filedialog_load=new filedialog(this,保存文件對話框,filedialog.load);filedialog_load.setvisible(false);filedialog_save.addwindowlistener(new windowadapter()public void
31、windowclosing(windowevent e)filedialog_save.setvisible(false););filedialog_load.addwindowlistener(new windowadapter()public void windowclosing(windowevent e)filedialog_load.setvisible(false); );addwindowlistener(new windowadapter()public void windowclosing(windowevent e)setvisible(false);system.exit
32、(0););public void itemstatechanged(itemevent e)string name=list.getselecteditem();font f=new font(name,font.plain,12);area.setfont(f);public void changedupdate(documentevent e)string s=area.gettext();public void removeupdate(documentevent e)changedupdate(e);public void insertupdate(documentevent e)c
33、hangedupdate(e);public void actionperformed(actionevent e)if(e.getsource()=itemsave)filedialog_save.setvisible(true);if(filedialog_save.getfile()!=null)try file file=new file(filedialog_save.getdirectory(), filedialog_save.getfile(); tofile=new filewriter(file); out=new bufferedwriter(tofile); out.w
34、rite(area.gettext(),0,(area.gettext().length(); out.close(); tofile.close();catch(ioexception e1) else if(e.getsource()=itemload)filedialog_load.setvisible(true);area.settext(null);string s;if(filedialog_load.getfile()!=null)tryfile file=new file(filedialog_load.getdirectory(), filedialog_load.getfi
35、le(); file_reader=new filereader(file); in=new bufferedreader(file_reader); while(s=in.readline()!=null) area.append(s+n); in.close(); file_reader.close();catch(ioexception e1) else if(e.getsource()=item1) area.settext(null);else if(e.getsource()=item2) area.cut();else if(e.getsource()=item3)area.co
36、py();else if(e.getsource()=item4)area.paste();else if(e.getsource()=item5) color newcolor=jcolorchooser.showdialog(this,調色板,area.getbackground();if(newcolor!=null) area.setbackground(newcolor); else if(e.getsource()=item6) zhuti zt=new zhuti();else if(e.getsource()=item7)system.exit(0);else if(e.get
37、source()=item8)font font=area.getfont(); int style=font.getstyle();style=style0; area.setfont(new font(,style,font.getsize();else if(e.getsource()=item9)font font=area.getfont(); int style=font.getstyle();style=style2; area.setfont(new font(,style,font.getsize();else if(e.getsource()=item10)font fon
38、t=area.getfont();int style=font.getstyle();style=style1; area.setfont(new font(,style,font.getsize();else if(e.getsource()=item11)font font=area.getfont();int style=font.getstyle();area.setfont(new font(font.getname(),style,12);else if(e.getsource()=item12)font font=area.getfont();int style=font.getstyle(); area.setfont(new font(font.getname(),style,24);else if(e.getsource()=item13)font font=area.getfont();int style=font.getst
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級國旗下保護環(huán)境講話稿
- 醫(yī)院骨科采購合同范本
- 區(qū)別真假租房合同范本
- 《除數(shù)是兩位數(shù)的除法之口算除法》教案
- 出口農產品購銷合同范本
- 廠家搬遷服務合同范例
- 《落花生》評課稿
- 醫(yī)院病理合作合同范本
- 原材料采購合同范例
- 個人壓車合同范本
- 2025年東營科技職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 《新媒體廣告》課件 第4章 從技術到場景:新媒體廣告的創(chuàng)新應用
- 2025年煙臺工程職業(yè)技術學院高職單招數(shù)學歷年(2016-2024)頻考點試題含答案解析
- 2025年上半年中煤科工集團商業(yè)保理限公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年新人教版八年級下冊物理全冊教案
- 2025年南京機電職業(yè)技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 物業(yè)管理消防維保流程優(yōu)化建議
- 電力企業(yè)發(fā)電企業(yè)設備點檢定修培訓教材
- 化學-浙江省首考2025年1月普通高等學校招生全國統(tǒng)一考試試題和答案
- 四川省成都市2024-2025學年高一上學期期末考試歷史試題(含答案)
- 2025年湖北中煙工業(yè)限責任公司招聘筆試高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論