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

下載本文檔

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

文檔簡介

PAGE課程設(shè)計(jì)課程名稱: JAVA程序設(shè)計(jì) 題目:簡易記事本 年級/專業(yè)/班: 學(xué)生姓名: 學(xué)號: 指導(dǎo)老師: 開題時(shí)間: 完成時(shí)間: 目錄摘要 1一、緒論 2二、需求分析 21、功能需求 22、函數(shù)需求 33、開發(fā)環(huán)境及運(yùn)行環(huán)境分析 3三、總體設(shè)計(jì) 41、系統(tǒng)流程設(shè)計(jì) 42、分模塊設(shè)計(jì) 4(1)“文件”菜單模塊設(shè)計(jì)流程圖 4(2)“編輯”菜單模塊設(shè)計(jì)流程圖 5(3)“格式”菜單模塊設(shè)計(jì)流程圖 6(4)“幫助”菜單模塊設(shè)計(jì)流程圖 73、類設(shè)計(jì) 74、界面設(shè)計(jì) 8(1)主界面 8(2)打開界面 9(3)保存界面 10(4)字體界面 11(5)幫助界面 15四、軟件測試 161、測試用例及結(jié)果 162、程序功能的評價(jià) 17五、結(jié)論 17六、參考文獻(xiàn) 18附錄(源程序完整代碼) 19摘要隨時(shí)著科學(xué)技術(shù)的快速發(fā)展,計(jì)算機(jī)程序設(shè)計(jì)早已成為了趨勢,JAVA是計(jì)算機(jī)專業(yè)的核心課程,是計(jì)算機(jī)科學(xué)的算法理論基礎(chǔ)和軟件設(shè)計(jì)的技術(shù)基礎(chǔ)。本課程設(shè)計(jì)就是主要利用java語言編寫的一個(gè)模仿windows記事本的較簡單的程序,它能實(shí)現(xiàn)打開文件,讀取文件中的文本信息;顯示、編輯修改文本信息;實(shí)現(xiàn)新建、打開、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能。本課程設(shè)計(jì)報(bào)告介紹了記事本系統(tǒng),記事本的設(shè)計(jì),在記事本的具體實(shí)現(xiàn)章節(jié),給出了部分實(shí)現(xiàn)了的功能界面和相關(guān)的代碼。關(guān)鍵詞:JAVA,記事本,相關(guān)功能ABSTRACTWiththerapiddevelopmentofscienceandtechnology,computerprogramminghasalreadybecomeatrend.JAVAisacorecourseofcomputerprofessional,isthebaseofcomputerscience.JAVAarepractice-neededcurriculum.Thiscourseisdesignedtostrengthenpracticeabilityofapowerfulway,requiringJAVAapplicationsandthebasicmethodsofcomputerdebugging.ThiscourseisasimpleproceduresdesignedmainlyusingJavalanguageandtheimitationofWindowsnotepad.Itcanrealizethatopenfiles,readthetextfileinformation,display,editandmodifytextinformation,new,openandsavetextfilesandcontroltosavetextmessagestothespecifiedfileandsoon.Thisgivesatexteditorgreatconvenience,andatthesametimegreatlyimprovestheefficiency.Thisreportintroducesnotebooksystemandnotepaddesign.Inthechapterofnotepadrealization,itgivespartofrealizedfunctioninterfaceandrelevantcode.Keywords:JAVA,notepad,Relevantfunction一、緒論在文本編輯器出現(xiàn)前,人們用打孔機(jī)把計(jì)算機(jī)文字打到穿孔卡片上。文字存放于一個(gè)裝著這樣的薄卡片的盒子里,可以用讀卡器來閱讀它。第一個(gè)文本編輯器是一種行編輯器,它運(yùn)行在打字機(jī)型的終端上,這種編輯器并不具備在窗口和屏幕中顯示的功能。它包含了一些非常短的命令(為了減少打字量)。其中一個(gè)命令能夠把文件的指定部分通過打字機(jī)打印出來。編輯光標(biāo)是想象中的一個(gè)插入點(diǎn),通過特殊命令,可以把它移動(dòng)到特定內(nèi)容字符串所在的行。隨后,內(nèi)容字符串又被擴(kuò)展成正則表達(dá)式。如果想看到文件的變化,你需要把它打印出來。相對于穿孔機(jī)來說,人們認(rèn)為這種基于行的文本編輯器具有革命性的進(jìn)步。如果沒有它,用戶就需要把那些處理文本的命令打成專用的卡片,并在編輯文件時(shí)使用這些卡片。當(dāng)帶有顯示屏的計(jì)算機(jī)終端出現(xiàn)后,基于顯示屏的文本編輯器開始流行起來。最早的全屏編輯器中,有一種叫做O26,它是于1967年為CDC6000系列機(jī)器的操作控制臺而作的。另外一個(gè)早期的全屏編輯器是vi。vi誕生于20世紀(jì)70年代,至今,它仍是Unix和Linux的標(biāo)準(zhǔn)編輯器。全屏編輯器對視頻終端的銷售起到了促進(jìn)的作用。二、需求分析1、功能需求本程序要構(gòu)建的記事本程序參照了Windows操作系統(tǒng)的記事本工具,其功能有以下幾個(gè)方面:(1)菜單中有“文件”、“編輯”、“格式”、“幫助”四個(gè)個(gè)主菜單;(2)“文件”有“新建”、“打開”、“保存”、“另存為”、“退出”五個(gè)字菜單,分別用于新建文件,打開文件,保存文件,另存文件,退出記事本。(3)“編輯”中,有“撤銷”、“復(fù)制”、“剪切”、“粘貼”、“刪除”、“全選”六個(gè)個(gè)子菜單,分別用于撤銷上一次操作,復(fù)制選中文字,剪切選中文字,粘貼選中文字,刪除選中文字,選定整個(gè)文件內(nèi)容。(4)“格式”中有自動(dòng)換行和字體兩個(gè)子菜單,字體中包含了“字體”、“字形”、“大小”、“顏色”四個(gè)操作項(xiàng)。字體項(xiàng)可以對文字的字體樣式做修改,字體數(shù)量為Windows默認(rèn)數(shù)值。字形項(xiàng)可以對文字的形式進(jìn)行修改,共有“常規(guī)”、“傾斜”、“粗體”、“粗體+傾斜”四個(gè)選項(xiàng)。大小中包含了8-72磅大小范圍內(nèi)的字體大小數(shù)值選項(xiàng)。顏色可以對字體進(jìn)行顏色上的修改,是字體更加漂亮,顏色數(shù)量為Windows默認(rèn)值。自動(dòng)換行能夠?qū)崿F(xiàn)文檔在編輯是否需要的自動(dòng)換行功能。(5)“幫助”菜單中有“關(guān)于記事本”一個(gè)子菜單,用于描述記事本程序的相關(guān)信息和開發(fā)人員的個(gè)人信息。2、函數(shù)需求本次設(shè)計(jì)中,設(shè)計(jì)了一個(gè)菜單欄和文本內(nèi)容區(qū)。設(shè)計(jì)過程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。JMenu用來制作菜單,JTextPane主要用來輸入文本。為了加入顏色的設(shè)置,所以加了一個(gè)JColorChooser組件。整個(gè)記事本分為2塊,菜單欄和內(nèi)容輸入?yún)^(qū)。菜單欄設(shè)計(jì)如下:類名:EditWindow(1)作用:主類(2)繼承的父類:JFrame類(3)實(shí)現(xiàn)的接口:windowListener類與actionListener類(4)成員變量說明:Filefile=null;//定義一個(gè)空文件 privateJLabelstateBar;//定義一個(gè)標(biāo)簽 privateJTextAreatext;//定義編輯區(qū) privateJMenuBarmenubar;//定義菜單欄 privateJMenumenu1、menu2、menu3、menu4;//定義菜單privateJMenuitem1-6,item2-6,item3-2,item4//定義菜單項(xiàng)主要成員方法說明:編輯區(qū)鍵盤事件:KeyListener類如果記事本的編輯區(qū)內(nèi)用鍵盤輸入了字符,就能夠被程序監(jiān)聽;窗口的事件監(jiān)聽:windowListener類,用來監(jiān)聽處理容器關(guān)閉觸發(fā)的事件:菜單項(xiàng)的事件監(jiān)聽:ActionListener類,用來監(jiān)聽并處理所有菜單項(xiàng)和內(nèi)容輸入?yún)^(qū)為事件源的事件。3、開發(fā)環(huán)境及運(yùn)行環(huán)境分析本記事本的開發(fā)環(huán)境是在windows7的環(huán)境下開發(fā),運(yùn)用了EditPul文本編輯器v3.30、JDK1.6開發(fā)工具,運(yùn)行環(huán)境是DOS下運(yùn)行的。三、總體設(shè)計(jì)1、系統(tǒng)流程設(shè)計(jì)輸入文字輸入文字文件編輯格式退出YN結(jié)束開始2、分模塊設(shè)計(jì)(1)“文件”菜單模塊設(shè)計(jì)流程圖開始開始“文件”菜單新建另存為File=null打開用JFileChooser()選擇所有打開文件路徑用unfold()讀取所選的文件內(nèi)容到記事本保存用sava()保存文件用JFileChooser()選擇文件另存的路徑用sava()保存文件退出或關(guān)閉文件是否修改用sava()保存文件Y結(jié)束N圖3.2“文件”菜單操作流程圖用close()關(guān)閉文件(2)“編輯”菜單模塊設(shè)計(jì)流程圖開始開始“編輯”菜單撤銷全選用Area.setText(value)實(shí)現(xiàn)復(fù)制用text.copy()實(shí)現(xiàn)粘貼設(shè)置修改標(biāo)簽,text.cut()粘貼設(shè)置修改標(biāo)簽,text.paste()刪除刪除value=area.getText();area.replaceSelection(null);用text.selectAll()實(shí)現(xiàn)退出或關(guān)閉文件是否修改用sava()保存文件并結(jié)束用close()關(guān)閉文件YN圖3.3“編輯”菜單操作流程圖(3)“格式”菜單模塊設(shè)計(jì)流程圖開始開始自動(dòng)換行字體結(jié)束(4)“幫助”菜單模塊設(shè)計(jì)流程圖開始開始“幫助”菜單關(guān)于記事本顯示記事本的有關(guān)信息結(jié)束圖3.4“幫助”菜單操作流程圖3、類設(shè)計(jì)成員變量類型成員變量名成員變量描述JMenuBarmenubar菜單條JTextAreaarea文本區(qū)JScrollPanepane滾動(dòng)條,當(dāng)文本內(nèi)容大于文本區(qū)時(shí)的時(shí)候顯示。JMenumenu1、menu2、menu3、menu4文件、編輯、字體、幫助JMenuItemitem11,item12,item13,item14,item16新建、打開、保存、另存為、退出JMenuItemitem21,item22,item23,item24,item25,item26撤銷、復(fù)制、剪切、粘貼、刪除、全選JMenuItemitem31,item32自動(dòng)換行、字體JMenuItemitem41關(guān)于記事本4、界面設(shè)計(jì)(1)主界面主界面主要是用于對選擇相應(yīng)的功能進(jìn)行相應(yīng)的功能,主界面主要包括文件,編輯,格式,幫助四個(gè)下拉菜單功能。主要代碼:publicclassexamJSB{ publicstaticvoidmain(String[]args) { EditWindowwin=newEditWindow("新建文本文檔"); }}classEditWindowextendsJFrameimplementsActionListener{ JMenuBarmenubar; JMenumenu1; JMenumenu2; JMenumenu3; JMenumenu4; JTextAreaarea; JFileChooserfileChooser; privateStringvalue; booleanisSaved=true; EditWindow(Strings) { setTitle(s); setSize(400,400); setLocation(50,50); setVisible(true); fileChooser=newJFileChooser("c:/"); //打開文件 menubar=newJMenuBar(); menu1=newJMenu("文件"); menu2=newJMenu("編輯"); menu3=newJMenu("格式"); menu4=newJMenu("幫助");//文字編輯區(qū)域 area=newJTextArea(); area.setFont(newFont("宋體",Font.PLAIN,16));/*設(shè)置當(dāng)前字體*/area.setLineWrap(true);/*設(shè)置文本區(qū)的換行策略*/JScrollPanepane=newJScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);/*垂直和水平滾動(dòng)條-查看無法完全顯示時(shí),滾動(dòng)條顯示*/ContainercontentPane=getContentPane();contentPane.add(pane,BorderLayout.CENTER);validate();isSaved=false; //剛剛打開的窗口狀態(tài)為未保存this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);}(2)打開界面主要代碼:elseif(e.getSource()==item12) //打開 {area.setText(null);intn=fileChooser.showOpenDialog(null);if(n==JFileChooser.APPROVE_OPTION) {Filefile=fileChooser.getSelectedFile();try{FileReaderreadfile=newFileReader(file);BufferedReaderin=newBufferedReader(readfile);Strings=null;while((s=in.readLine())!=null)area.append(s+"\n"); }catch(IOExceptionee){} }}(3)保存界面主要代碼:privatevoidSave(){//從標(biāo)題欄取得文件名稱Filefile=newFile(getTitle());//若指定的文件不存在if(!file.exists()){//執(zhí)行另存為saveFileAs();}else{try{//開啟指定的文件BufferedWriterbuf=newBufferedWriter(newFileWriter(file));//將文字編輯區(qū)的文字寫入文件buf.write(area.getText());buf.close();}catch(IOExceptione){JOptionPane.showMessageDialog(null,e.toString(),"寫入文件失敗",JOptionPane.ERROR_MESSAGE);}}}(4)字體界面主要代碼://引用Fonts事件設(shè)計(jì)字體classFontsextendsJDialog{privatestaticfinallongserialVersionUID=4042773383845024827L;//字體格式Stringstyle=null;Stringbold=null;Stringsize=null;Fontfont=null;String[]str_style=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();String[]str_bold={"常規(guī)","傾斜","粗體","粗體傾斜"};String[]str_size={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};// publicJLabellabel1=newJLabel("字體(F):"); publicJList<String>fontStyle=newJList<String>(str_style); publicJScrollPaneStyleJScrollPane=newJScrollPane(fontStyle); publicJLabellabel2=newJLabel("字形(Y):"); publicJList<String>fontBold=newJList<String>(str_bold); publicJScrollPaneBoldJScrollPane=newJScrollPane(fontBold); publicJLabellabel3=newJLabel("大小(S):"); publicJTextFieldsizeField=newJTextField("23"); publicJList<String>fontSize=newJList<String>(str_size); publicJScrollPaneSizeJScrollPane=newJScrollPane(fontSize); publicJLabelfontDisplay=newJLabel("AaBbYyZz"); publicJTextFieldtextField=newJTextField(); publicJButtonsureButton=newJButton("確定"); publicJButtoncancelButton=newJButton("取消"); publicJButtoncolorButton=newJButton("改變顏色"); publicColorcolor; EditWindowmy=null; publicFonts(EditWindowframe) { super(frame,"字體和顏色",true); color=Color.black; this.my=frame; this.style="宋體"; this.bold="常規(guī)"; this.size="23"; label1.setBounds(10,5,50,30); StyleJScrollPane.setBounds(10,40,160,150); fontStyle.addMouseListener(newMouseAdapter(){ publicvoidmousePressed(MouseEvente) { JListsource=(JList)e.getSource();Fonts.this.style=source.getSelectedValue().toString();Fonts.this.setFont(); } });label2.setBounds(190,5,50,30);BoldJScrollPane.setBounds(190,40,90,150);fontBold.addMouseListener(newMouseAdapter(){publicvoidmousePressed(MouseEvente) {JListsource=(JList)e.getSource();Fonts.this.bold=source.getSelectedValue().toString();Fonts.this.setFont(); } });label3.setBounds(300,5,60,30);SizeJScrollPane.setBounds(300,60,60,130);fontSize.addMouseListener(newMouseAdapter(){publicvoidmousePressed(MouseEvente) {JListsource=(JList)e.getSource();sizeField.setText(source.getSelectedValue().toString());Fonts.this.size=source.getSelectedValue().toString();Fonts.this.setFont(); } });sizeField.setBounds(300,40,60,20);fontDisplay.setBorder(BorderFactory.createTitledBorder("示例"));fontDisplay.setBounds(20,220,200,100);fontDisplay.setHorizontalAlignment(JLabel.CENTER);sureButton.setBounds(280,260,80,30);sureButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){my.area.setFont(font);my.area.setForeground(color);Fonts.this.dispose(); } });cancelButton.setBounds(280,300,80,30);cancelButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){Fonts.this.dispose(); } });colorButton.setBounds(260,220,100,20);this.add(colorButton);colorButton.addActionListener(newActionListener(){ @OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubcolor=JColorChooser.showDialog(null,"改變字體顏色",Color.black); } });this.add(label1);this.add(label2);this.add(label3);this.add(sizeField);this.add(BoldJScrollPane);this.add(StyleJScrollPane);this.add(SizeJScrollPane);this.add(fontDisplay);this.add(sureButton);this.add(cancelButton);this.setLayout(null);this.setSize(400,380);intx=(int)my.getLocation().x+100;inty=(int)my.getLocation().y+100;this.setLocation(x,y); }//由選項(xiàng)確定font字體voidsetFont(){intbold;if(this.bold.equals("粗體"))bold=Font.BOLD;elseif(this.bold.equals("常規(guī)"))bold=Font.PLAIN;elseif(this.bold.equals("粗體傾斜"))bold=Font.BOLD+Font.ITALIC;elseif(this.bold.equals("傾斜"))bold=Font.ITALIC;elsebold=Font.PLAIN;this.font=newFont(this.style,bold,Integer.parseInt(this.size));//更改樣本字體// System.out.println(this.font);fontDisplay.setForeground(color);this.fontDisplay.setFont(this.font); }}(5)幫助界面主要代碼:elseif(e.getSource()==item41)JOptionPane.showOptionDialog(null,"制作人:\n班級:10計(jì)本1班\n姓名:李醒世爭\n學(xué)號:2010305107\n"+"編程環(huán)境:\nwin7旗艦版64位\nEditPlus3\nJDK1.7","關(guān)于記事本",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,null,null);/*JOptionPane有助于方便地彈出要求用戶提供值或向其發(fā)出通知的標(biāo)準(zhǔn)對話框。*/四、軟件測試1、測試用例及結(jié)果圖4.1主窗口圖4.1為運(yùn)行程序的主窗口。圖4.2打開界面圖4.2為打開電腦里的文件的窗口。圖4.4字體顏色界面圖4.4為軟件改變字體格式和顏色界面,可以更改成不同形式和顏色的字體。本次測試結(jié)果成功,基本功能可以實(shí)現(xiàn)!2、程序功能的評價(jià)本記事本實(shí)現(xiàn)了記事本常用的一些功能,文件的新建,可以打開電腦里的文檔文件,進(jìn)行修改和保存,例如可以對文字進(jìn)行撤銷、復(fù)制、粘貼、剪切、刪除、全選等功能。還可以對字體的大小風(fēng)格進(jìn)行設(shè)置,實(shí)現(xiàn)對記事本字體顏色的修改,用戶可以自定義文字的顏色,??傮w來說本記事本已經(jīng)實(shí)現(xiàn)了工作需要的功能,能夠用于一般的編寫文字。不足之處是本記事本還未能設(shè)置好頁面設(shè)置,方便用戶進(jìn)行設(shè)置頁面的需求,并且打印功能也沒有實(shí)現(xiàn)。程序相對來說比較簡單,需要進(jìn)一步完善。五、結(jié)論經(jīng)過一個(gè)多月來的緊張?jiān)O(shè)計(jì)和開發(fā),在指導(dǎo)老師的精心指導(dǎo)和安排下,記事本已經(jīng)順利設(shè)計(jì)完畢。其功能基本實(shí)現(xiàn)了預(yù)期的開發(fā)要求,能夠滿足各種排序的順利排序,具有一定的實(shí)用性和輔助開發(fā)新軟件的合理性。但是由于時(shí)間比較倉促,加上本人軟件設(shè)計(jì)經(jīng)驗(yàn)的不足。因此,在分析問題、解決問題時(shí)顯得不夠嚴(yán)密、完善,還需要在以后的工作中不斷地改進(jìn)和完善。在這次畢業(yè)設(shè)計(jì)開發(fā)過程中,主要有以下幾點(diǎn)收獲:(1)通過一個(gè)多月的系統(tǒng)分析、設(shè)計(jì)、開發(fā),系統(tǒng)編碼、測試、遠(yuǎn)行和維護(hù)等,使我對以前所學(xué)的的理論知識有了更深一層次的了解,使我明白了如何更好的將自己所學(xué)的理論知識運(yùn)用到工作實(shí)踐中。(2)通過這次課程設(shè)計(jì),提高了我對系統(tǒng)分析的能力,對數(shù)據(jù)流圖、系統(tǒng)的流程圖、數(shù)據(jù)庫的設(shè)計(jì)、代碼的編寫能力也有所增強(qiáng),為我以后的工作和學(xué)習(xí)的進(jìn)一步提高打下了堅(jiān)實(shí)的基礎(chǔ)。(3)通過這次課程設(shè)計(jì),使我明白了軟件開發(fā)不僅僅是代碼的編寫,代碼的編寫在軟件的整個(gè)開發(fā)過程中只占了很少的部分,軟件整個(gè)開發(fā)過程中包括了需求分析、可行性研究、系統(tǒng)的設(shè)計(jì)、代碼的編寫和調(diào)試、運(yùn)行和維護(hù)等。六、參考文獻(xiàn)[1]孫全黨,王吳迪,趙楓朝.Java程序設(shè)計(jì)應(yīng)用教程[M].北京:電子工業(yè)出版社,2006[2]雷之宇.Java項(xiàng)目開發(fā)實(shí)踐——網(wǎng)絡(luò)篇[M].北京:中國鐵道出版社,2005[3]趙玉陽.Java從入門到精通[M].北京:清華大學(xué)出版社,2006[4]李龍怡.Java編程實(shí)例講解[M].北京:高等教育出版社,2005[5]李尊朝,蘇軍.Java語言程序設(shè)計(jì)[M].北京:中國鐵道出版社,2009附錄(源程序完整代碼)importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;importjava.io.*;publicclassexamJSB{publicstaticvoidmain(String[]args) {EditWindowwin=newEditWindow("新建文本文檔"); }}classEditWindowextendsJFrameimplementsActionListener{JMenuBarmenubar;JMenumenu1;JMenumenu2;JMenumenu3;JMenumenu4;JMenuItemitem11,item12,item13,item14,item15,item16;JMenuItemitem21,item22,item23,item24,item25,item26;JMenuItemitem31,item32; JMenuItemitem41; JTextAreaarea; JFileChooserfileChooser; privateStringvalue; booleanisSaved=true; EditWindow(Strings) { setTitle(s); setSize(400,400); setLocation(50,50); setVisible(true); fileChooser=newJFileChooser("c:/"); //打開文件 menubar=newJMenuBar(); menu1=newJMenu("文件"); menu2=newJMenu("編輯"); menu3=newJMenu("格式"); menu4=newJMenu("幫助"); item11=newJMenuItem("新建"); item12=newJMenuItem("打開"); item13=newJMenuItem("保存"); item14=newJMenuItem("另存為.."); item15=newJMenuItem("打印"); item16=newJMenuItem("退出"); item21=newJMenuItem("撤銷"); item22=newJMenuItem("復(fù)制"); item23=newJMenuItem("剪切"); item24=newJMenuItem("粘貼"); item25=newJMenuItem("刪除"); item26=newJMenuItem("全選"); item31=newJMenuItem("自動(dòng)換行"); item32=newJMenuItem("字體"); item41=newJMenuItem("關(guān)于記事本"); menu1.add(item11); menu1.add(item12); menu1.add(item13); menu1.add(item14); menu1.addSeparator(); menu1.add(item15); menu1.addSeparator(); menu1.add(item16); menu2.add(item21); menu2.addSeparator(); menu2.add(item22); menu2.add(item23); menu2.add(item24); menu2.add(item25); menu2.addSeparator(); menu2.add(item26); menu3.add(item31); menu2.addSeparator(); menu3.add(item32); menu4.add(item41); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); menubar.add(menu4); setJMenuBar(menubar); //文字編輯區(qū)域 area=newJTextArea(); area.setFont(newFont("宋體",Font.PLAIN,16));/*設(shè)置當(dāng)前字體*/area.setLineWrap(true);/*設(shè)置文本區(qū)的換行策略*/ JScrollPanepane=newJScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);/*垂直和水平滾動(dòng)條-查看無法完全顯示時(shí),滾動(dòng)條顯示*/ContainercontentPane=getContentPane();contentPane.add(pane,BorderLayout.CENTER);validate(); isSaved=false; //剛剛打開的窗口狀態(tài)為未保存 this.setTitle("無標(biāo)題"); this.setSize(800,600); this.setVisible(true); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(EXIT_ON_CLOSE); //監(jiān)聽事件 item11.addActionListener(this); item12.addActionListener(this); item13.addActionListener(this); item14.addActionListener(this); item15.addActionListener(this); item16.addActionListener(this); item21.addActionListener(this); item22.addActionListener(this); item23.addActionListener(this); item24.addActionListener(this); item25.addActionListener(this); item26.addActionListener(this); item31.addActionListener(this); item32.addActionListener(this); item41.addActionListener(this); item31.setSelected(true);//初始化時(shí)即勾選自動(dòng)換行 this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEventarg0){ //TODOAuto-generatedmethodstub doExit(); } }); } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==item21) area.setText(value); //撤銷 elseif(e.getSource()==item22) area.copy(); //復(fù)制 elseif(e.getSource()==item23) area.cut(); //剪切 elseif(e.getSource()==item24) area.paste(); //粘貼 elseif(e.getSource()==item25) { value=area.getText(); //刪除 area.replaceSelection(null); } elseif(e.getSource()==item26) area.selectAll(); //全選 elseif(e.getSource()==item11) NewFile(); //新建 elseif(e.getSource()==item12) //打開 { area.setText(null); intn=fileChooser.showOpenDialog(null); if(n==JFileChooser.APPROVE_OPTION) { Filefile=fileChooser.getSelectedFile(); try{ FileReaderreadfile=newFileReader(file); BufferedReaderin=newBufferedReader(readfile); Strings=null; while((s=in.readLine())!=null)area.append(s+"\n"); } catch(IOExceptionee){} }} elseif(e.getSource()==item13) Save(); //保存 elseif(e.getSource()==item14) saveFileAs(); //另存為// elseif(e.getSource()==item15)// doPrint(); elseif(e.getSource()==item16) doExit(); elseif(e.getSource()==item31) area.setLineWrap(!area.getLineWrap()); //自動(dòng)換行elseif(e.getSource()==item32) { Fontsf1=newFonts(this); //引用Fonts事件設(shè)計(jì)字體 f1.setVisible(true); f1.setFont(); } elseif(e.getSource()==item41) JOptionPane.showOptionDialog(null, "制作人:\n班級:10計(jì)本1班\n姓名:李醒世爭\n學(xué)號:2010305107\n"+ "編程環(huán)境:\nwin7旗艦版64位\nEditPlus3\nJDK1.7", "關(guān)于記事本", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null );/*JOptionPane有助于方便地彈出要求用戶提供值或向其發(fā)出通知的標(biāo)準(zhǔn)對話框。*/ } //“新建” publicvoidNewFile() { intoption=JOptionPane.showConfirmDialog(null,"是否將更改保存到"+"\"" +this.getTitle()+"\"?","記事本", JOptionPane.INFORMATION_MESSAGE); if(option==JOptionPane.YES_OPTION) Save(); elseif(option==JOptionPane.NO_OPTION); area.setText(""); setTitle("無標(biāo)題"); //isCurrentFileSaved()=false; } //“保存” privatevoidSave(){//從標(biāo)題欄取得文件名稱Filefile=newFile(getTitle());//若指定的文件不存在if(!file.exists()){//執(zhí)行另存為saveFileAs();}else{try{//開啟指定的文件BufferedWriterbuf=newBufferedWriter(newFileWriter(file));//將文字編輯區(qū)的文字寫入文件buf.write(area.getText());buf.close();}catch(IOExceptione){JOptionPane.showMessageDialog(null,e.toString(),"寫入文件失敗",JOptionPane.ERROR_MESSAGE);}}}//“另存為”privatevoidsaveFileAs() {//顯示文件對話框intoption=fileChooser.showSaveDialog(null);//如果確認(rèn)選取文件if(option==JFileChooser.APPROVE_OPTION) {//取得選擇的文件Filefile=fileChooser.getSelectedFile();//在標(biāo)題欄上設(shè)定文件名稱setTitle(file.toString());try{//建立文件file.createNewFile();//進(jìn)行文件保存Save(); }catch(IOExceptione) { JOptionPane.showMessageDialog(null,e.toString(),"無法建立新文件",JOptionPane.ERROR_MESSAGE); } }} //退出 publicvoiddoExit(){if(isSaved){ dispose();//釋放資源,關(guān)閉程序 }else{ intresult=JOptionPane.showConfirmDialog(null,"是否將更改保存到"+"\"" +this.getTitle()+"\"?","記事本", JOptionPane.INFORMATION_MESSAGE); if(result==JOptionPane.YES_OPTION){ Save(); dispose(); }elseif(result==JOptionPane.NO_OPTION) dispose(); } } //引用Fonts事件設(shè)計(jì)字體 classFontsextendsJDialog{ privatestaticfinallongserialVersionUID=4042773383845024827L; //字體格式 Stringstyle=null; Stringbold=null; Stringsize=null; Fontfont=null; String[]str_style=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); String[]str_bold={"常規(guī)","傾斜","粗體","粗體傾斜"}; String[]str_size={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"}; // publicJLabellabel1=newJLabel("字體(F):"); publicJList<String>fontStyle=newJList<String>(str_style); publicJScrollPaneStyleJScrollPane=newJScrollPane(fontStyle); publicJLabellabel2=newJLabel("字形(Y):"); publicJList<String>fontBold=newJList<String>(str_bold); publicJScrollPaneBoldJScrollPane=newJScrollPane(fontBold); publicJLabellabel3=newJLabel("大小(S):"); publicJTextFieldsizeField=newJTextField("23"); publicJList<String>fontSize=newJList<String>(str_size); publicJScrollPaneSizeJScrollPane=newJScrollPane(fontSize); publicJLabelfontDisplay=newJLabel("AaBbYyZz"); publicJTextFieldtextField=newJTextField(); publicJButtonsureButton=newJButton("確定"); publicJButtoncancelButton=newJButton("取消"); publicJButtoncolorButton=newJButton("改變顏色"); publicColorcolor; EditWindowmy=null; publicFonts(EditWindowframe) {super(frame,"字體和顏色",true); color=Color.black; this.my=frame; this.style="宋體"; this.bold="常規(guī)"; this.size="23"; label1.setBounds(10,5,50,30); StyleJScrollPane.setBounds(10,40,160,150); fontStyle.addMouseListener(newMouseAdapter(){ publicvoidmousePressed(MouseEvente) { JListsource=(JList)e.getSource(); Fonts.this.style=source.getSelectedValue().toString(); Fonts.this.setFont(); } }); label2.setBounds(190,5,50,3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論