JAVA語言課程設(shè)計(jì)記事本_第1頁
JAVA語言課程設(shè)計(jì)記事本_第2頁
JAVA語言課程設(shè)計(jì)記事本_第3頁
JAVA語言課程設(shè)計(jì)記事本_第4頁
JAVA語言課程設(shè)計(jì)記事本_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、* 實(shí)踐教學(xué)實(shí)踐教學(xué) * 江西中醫(yī)學(xué)院江西中醫(yī)學(xué)院 2010 年秋季學(xué)期 java 語言語言課程設(shè)計(jì)課程設(shè)計(jì) 題題 目:目: 記事本記事本 專業(yè)班級(jí):專業(yè)班級(jí): 0909 計(jì)算機(jī)班計(jì)算機(jī)班 姓姓 名:名: 指導(dǎo)教師:指導(dǎo)教師: 成成 績(jī):績(jī): - 1 - 目 錄 摘 要.2 序 言.3 正 文.4 1.需求分析 .4 2.功能設(shè)計(jì).4 3.設(shè)計(jì)思路.4 4.模塊說明圖.4 5.程序運(yùn)行界面.6 6.程序相關(guān)說明.8 源程序.8 設(shè)計(jì)總結(jié).12 參考文獻(xiàn).13 - 2 - 摘要 該報(bào)告中的程序是使用 java 程序編寫,使用的是 swing 設(shè)計(jì)的,能夠進(jìn)行 輸入文字操作,并具有新建文件,打開文

2、件,保存文件,退出,復(fù)制,粘貼, 剪切等功能,該程序還主要用到了 java swing 和容器(container) 、組件 (component) 、版面管理器(layout manager) 、事件監(jiān)聽器(event listener)等。 關(guān)鍵字:記事本程序;java 語言; 序言 java 的前身是 oak,它一開始只是被應(yīng)用于消費(fèi)性電子產(chǎn)品中。后來它 的開發(fā)者們發(fā)現(xiàn)它還可以被用于更大范圍的 internet 上。1995 年,java 語言的名字從 oak 編程了 java。1997 年 j2se1.1 發(fā)布。1998 年 j2se1.2 發(fā) 布,標(biāo)志 java2 的誕生。十多年來,

3、java 編程語言及平臺(tái)成功地運(yùn)用在網(wǎng) 絡(luò)計(jì)算及移動(dòng)等各個(gè)領(lǐng)域。java 的體系結(jié)構(gòu)由 java 語言、java class、java api、java 虛擬機(jī)組成。它具有簡(jiǎn)單、面向?qū)ο蟆⒔?、安全?結(jié)構(gòu)中立、可移植和高效能等眾多優(yōu)點(diǎn)。java 支持多線程編程,java 運(yùn)行 時(shí)系統(tǒng)在多線程同步方面具有成熟的解決方案。java 的平臺(tái)標(biāo)準(zhǔn)有 java me,java se 和 java ee。java 發(fā)展到今天,它的卓越成就及在業(yè)界的地位 毋庸置疑。目前在眾多的支持 java 的開發(fā)工具中主要的 7 有 java development kit,netbeans,jcreator,jbui

4、lder,jdeveloper 和 eclipse 等。其中 java development kit 簡(jiǎn)稱 jdk 是大多開發(fā)工具的基礎(chǔ)。 以上的每種開發(fā)工具都有優(yōu)缺點(diǎn),對(duì)于開發(fā)者來說,重要的是要根據(jù)自己 的開發(fā)規(guī)模、開發(fā)內(nèi)容和軟硬件環(huán)境等因素來選擇一種合適的開發(fā)工具。 在本程序設(shè)計(jì)中,運(yùn)用了許多用于 java 開發(fā)的工具包,比如 java.awt,java.swing,java.io 等包,大大簡(jiǎn)化了開發(fā)的復(fù)雜度,提高了效 率。 正文 1. 需求分析 現(xiàn)在網(wǎng)絡(luò)上各種文檔編輯器數(shù)不勝數(shù),有 emeditor ,uestudio ,gridinsoft notepad ,notepad+,wi

5、n32pad ,skimedit,unired, xint 。功能也是應(yīng)有盡有,有能改變字體 - 3 - 的,有能改變文字顏色的。但是,這些軟件又存在各種各樣的瑕疵 或問題:有的文件體積相對(duì)于一般文字編輯來說太大;有的功能太 繁雜,使初級(jí)使用者一時(shí)難以掌握。僅從日常應(yīng)用方面來說,一個(gè) 文本編輯器只需一些簡(jiǎn)單實(shí)用的功能就夠了。本程序設(shè)計(jì)就是依照 這樣一種使用需要設(shè)計(jì)了一個(gè)簡(jiǎn)單的記事本程序。簡(jiǎn)單的記事本程序。 2. 功能設(shè)計(jì) 本程序構(gòu)建的記事本工具主要具備以下幾種功能: (1)菜單中有“文件” , “編輯” ,二個(gè)主菜單。 (2)“文件”有“新建” “打開” “保存” “退出”四個(gè)子菜單, 分別用

6、于新建文件,打開文件,保存文件,退出記事本。 (3)“編輯”菜單有“復(fù)制” “剪切” “查找” “粘貼”等子菜單。 3設(shè)計(jì)思路 在本程序中,設(shè)計(jì)了一個(gè)菜單欄和文本內(nèi)容區(qū)。設(shè)計(jì)過程中用到了 jscrollpane,jmenu,jfilechooser 等。jmenu 用來制作菜單,菜單 包括“文件” “編輯” “關(guān)于” 。jtextpane 主要用來輸入文本。 4. 模塊說明圖 圖 1 在圖 1 中,首先創(chuàng)建一個(gè)名為 jishiben 的類并繼承 jframe 類作為最 底層的容器。 jishiben implements extends actionlistener jframe jishib

7、en 的 構(gòu)造方法 - 4 - 圖 2 在圖 2 中,構(gòu)造一個(gè) jishiben 類時(shí)要做三件事情,分別是將窗口中 的組件的設(shè)置,與事件的處理分別交給 setupuicomponent()與 setupeventlistener()兩個(gè)方法來處理。 5程序運(yùn)行界面 圖 3 記事本運(yùn)行初始化界面 初始化容器 組件 添加事件監(jiān) 聽 菜單欄文字輸入?yún)^(qū) 文件編輯格式 新 建 打 開 保 存 退 出 剪 切 復(fù) 制 粘 貼 查 找 自動(dòng) 換行 初始化初始化 字體 - 5 - 圖 4 記事本菜單欄中的“文件”菜單打開 圖 5 記事本菜單欄中的“編輯”菜單打開 6.程序相關(guān)說明 - 6 - 整個(gè)記事本分為兩

8、塊:菜單欄和內(nèi)容輸入?yún)^(qū)。本程序中首先定義一個(gè) jishben 類繼承 jframe 作為最底層容器。 (1)textarea 為程序文本輸入?yún)^(qū)。 (2)menu 為菜單欄。 (3)aboutdialog 為關(guān)于對(duì)話框。 (4)要想記事本完成需求分析中相應(yīng)的功能,還必須添加事件監(jiān)聽器。事件 監(jiān)聽器不僅要添加在菜單欄和內(nèi)容輸入?yún)^(qū),還需加在容器中。本程序中實(shí) 現(xiàn)了 actionlistener 接口,用來監(jiān)聽并處理所有菜單項(xiàng)和內(nèi)容輸入?yún)^(qū)為 事件源的事件。 源程序 import java.awt.borderlayout; import java.awt.container; import java.

9、awt.font; import java.awt.event.inputevent; import java.awt.event.keyevent; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouselistener; import java.awt.event.windowadapter; import java.awt.event.keyadapter; import java.awt.event.mouseadapter; import

10、java.awt.event.mouseevent; import java.awt.event.windowevent; import javax.swing.borderfactory; import javax.swing.jlabel; import javax.swing.jframe; import javax.swing.jmenu; import javax.swing.jmenubar; import javax.swing.jmenuitem; import javax.swing.jscrollpane; import javax.swing.jtextarea; imp

11、ort javax.swing.keystroke; import javax.swing.scrollpaneconstants; import javax.swing.swingconstants; import javax.swing.jpopupmenu; - 7 - import javax.swing.jframe; public class jishiben4 extends jframe private jmenuitem itemopen=new jmenuitem(); private jmenuitem itemsave=new jmenuitem(); private

12、jmenuitem itemsaveas=new jmenuitem(); private jmenuitem itemclose=new jmenuitem(); private jmenu menu2; private jmenuitem itemcut=new jmenuitem(); private jmenuitem itemcopy=new jmenuitem(); private jmenuitem itempaste=new jmenuitem(); private jmenuitem itemfind=new jmenuitem(); private jmenu menu3;

13、 private jmenu menu4; private jmenu menu5; private jtextarea text=new jtextarea(); private jpopupmenu popupmenu; public jishiben4() super(新建文本文件); setupuicomponent(); setupeventlistener(); setvisible(true); private void setupuicomponent() setsize(640, 480); jmenubar menubar = new jmenubar(); jmenu m

14、enu1, menu2, menu3, menu4, menu5; jmenuitem itemsaveas, itemnew, itemclose, itemcut, itemcopy, itempaste, itemdel, itemfind, item12, item13, item14, item15; /聲明 jmenuitem itemopen, itemsave; /設(shè)置“文件”菜單 menu1 = new jmenu(文件); /設(shè)置打開項(xiàng) itemopen = new jmenuitem(打開(o).); - 8 - itemopen.setaccelerator(keyst

15、roke.getkeystroke(keyevent.vk_o, inputevent.ctrl_mask); /設(shè)置保存項(xiàng) itemsave = new jmenuitem(保存); itemsave.setaccelerator(keystroke.getkeystroke(keyevent.vk_s, inputevent.ctrl_mask); /設(shè)置新建項(xiàng) itemnew = new jmenuitem(新建); itemnew.setaccelerator(keystroke.getkeystroke(keyevent.vk_m, inputevent.ctrl_mask); /設(shè)

16、置另存為項(xiàng) itemsaveas = new jmenuitem(另存為); /設(shè)置關(guān)閉項(xiàng) itemclose = new jmenuitem(關(guān)閉); itemclose.setaccelerator(keystroke.getkeystroke(keyevent.vk_q, inputevent.ctrl_mask); menu1.add(itemnew); menu1.addseparator(); /分隔線 menu1.add(itemopen); menu1.add(itemsave); menu1.add(itemsaveas); menu1.addseparator(); /分隔

17、線 menu1.add(itemclose); /設(shè)置“編輯”菜單 menu2 = new jmenu(編輯); /設(shè)置“剪切”項(xiàng) itemcut = new jmenuitem(剪切); itemcut.setaccelerator(keystroke.getkeystroke(keyevent.vk_x, inputevent.ctrl_mask); /設(shè)置“復(fù)制”項(xiàng) itemcopy = new jmenuitem(復(fù)制); itemcopy.setaccelerator(keystroke.getkeystroke(keyevent.vk_c, inputevent.ctrl_mask

18、); - 9 - /設(shè)置“黏貼”項(xiàng) itempaste = new jmenuitem(粘貼); itempaste.setaccelerator(keystroke.getkeystroke(keyevent.vk_q, inputevent.ctrl_mask); /設(shè)置“查找”項(xiàng) itemfind = new jmenuitem(查找); itemfind.setaccelerator(keystroke.getkeystroke(keyevent.vk_f, inputevent.ctrl_mask); menu2.add(itemcut); menu2.add(itemcopy);

19、menu2.add(itempaste); menu2.add(itemfind); /設(shè)置“格式”項(xiàng) menu3 = new jmenu(格式); item12 = new jmenuitem(自動(dòng)換行); item13 = new jmenuitem(字體); menu3.add(item12); menu3.add(item13); /設(shè)置“查看”項(xiàng) menu4 = new jmenu(查看); item14 = new jmenuitem(狀態(tài)欄); menu4.add(item14); /設(shè)置“幫助”項(xiàng) menu5 = new jmenu(幫助); item15 = new jmen

20、uitem(幫助主題); menu5.add(item15); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); menubar.add(menu4); menubar.add(menu5); /設(shè)置菜單項(xiàng) setjmenubar(menubar); /文字編輯區(qū) jtextarea text = new jtextarea(); - 10 - text.setfont(new font(宋體, font.plain, 16); text.setlinewrap(true); jscrollpane panel = new

21、jscrollpane(text, scrollpaneconstants. vertical_scrollbar_as_needed, scrollpaneconstants. horizontal_scrollbar_never); /插入組件 container contentpane = getcontentpane(); /取得 contentpane contentpane.add(panel, borderlayout.center); /狀態(tài)欄 jlabel statebar = new jlabel(未修改); statebar.sethorizontalalignment(

22、swingconstants.left); statebar.setborder( borderfactory.createetchedborder(); contentpane.add(statebar, borderlayout.south); popupmenu = menu2.getpopupmenu(); private void setupeventlistener() /單擊窗口關(guān)閉按鈕事件處理 addwindowlistener( new windowadapter() public void windowclosing(windowevent e) closefile();

23、); /菜單“打開”項(xiàng) itemopen.addactionlistener( new actionlistener() public void actionperformed(actionevent e) openfile(); ); /菜單“保存”項(xiàng) itemsave.addactionlistener( new actionlistener() - 11 - public void actionperformed(actionevent e) savefile(); ); /菜單“另存為” itemsaveas.addactionlistener( new actionlistener(

24、) public void actionperformed(actionevent e) savefileas(); ); /菜單“關(guān)閉” itemclose.addactionlistener( new actionlistener() public void actionperformed(actionevent e) closefile(); ); /菜單“剪切” itemcut.addactionlistener( new actionlistener() public void actionperformed(actionevent e) cut(); ); /菜單“復(fù)制” item

25、copy.addactionlistener( new actionlistener() public void actionperformed(actionevent e) copy(); ); /菜單“粘貼” itempaste.addactionlistener( new actionlistener() public void actionperformed(actionevent e) - 12 - paste(); ); /菜單“查找” itemfind.addactionlistener( new actionlistener() public void actionperfor

26、med(actionevent e) find(); ); /編輯區(qū)鍵盤事件 text.addkeylistener( new keyadapter() public void keytyped(keyevent e) processtext(); ); /編輯區(qū)鼠標(biāo)事件 text.addmouselistener( new mouseadapter() public void mousereleased(mouseevent e) if (e.getbutton() = mouseevent.button3) popupmenu.show(menu2, e.getx(), e.gety();

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論