java记事本课程设计论文附源码_第1页
java记事本课程设计论文附源码_第2页
java记事本课程设计论文附源码_第3页
免费预览已结束,剩余17页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息科学与工程学院Java课程设计设计题目:记事本课程设计业:电子信息科学与技术级:电子1202班号:20121210606名:王鹏2015年7月XXX学院本科学生课程设计任务书题目记事本1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)模拟Windows的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。3、主要参考文献朱福喜.Java语言程序设计(第二版).科学出版社陈国启等.Ja

2、va程序设计基础(第二版).活华大学出版社Deitel.«Java大学基础教程(第六版).电子工业出版社MaryCampione.Java语言导学(第四版).机械工业出版社Y.DanielLiang.«Java语言程序设计基础篇(第六版).机械工业出版社KathySierra.«HeadFirstJava(第二版).东南大学出版社4、课程设计工作进度计划;时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年月日教研室意见:年月日学生(签字):接受任务时间:年月目前,很多新的技术领

3、域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。该程序主要用到了Javaswing和事件监听等。关键词记事本程序,java语言,Javaswing1 摘要1需求分析31.1需求分析32 1.2功能

4、设计3概要分析42.1概要设计思想42.2程序运行界面42.3程序模块说明42.4流程图52.5程序相关说明63程序详细设计与分析83.1构建菜单栏及其下拉菜单83.2 “文件”菜单操作的事件监听83.3 “编辑”、“格式”等菜单的事件监听103.4异常处理114测试分析125源程序活单15结论22参考文献231需求分析1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad+,win32pad,SkimEdit,UniRed,xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件乂存在各种

5、各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。1.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”

6、六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。全部选择,插入日期、时间。4、“格式”菜单中有“自动换行”和“字体”两个子菜单。5、“查看”菜单只是显示状态栏。6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。2概要分析2.1概要设计思想在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到了JMenu,JMenuItem等。JMenu用来制作菜单,菜单包括“文件”“编辑”“格式”“查看”“帮助”。JMenuItem主要用来制作主菜单下面的子菜单。2.2程序运行界面图2.1记事本程序运行界面2.3程序模块说明False图2.2类Notepad模块图2.

7、3程序详细模块2.4流程图启动程序关于记事图2.4程序流程图2.5程序相关说明整个记事本分为2快:菜单栏和内容输入区。本程序中首先定义一个Notepad类继承JFrame作为最底层容器。(1) 、text为程序文本输入区。(2) 、Menu为菜单栏。、要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中Listen和Listenl实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。3程序详细设计与分析3.1构建菜单栏及其下拉菜单JMenufiles=newJMenu("文件

8、(F)");JMenuedit=newJMenu("编辑(E)");JMenuformats=newJMenu("格式(O)");JMenuscan=newJMenu(”查看(V)");JMenuhelp=newJMenu("帮助(H)”);JMenuItemnewFile=newJMenuItem("新建(N)”);JMenultemopen=newJMenuItem("打开(O).");JMenuItemsave=newJMenuItem("保存(S)");JMenuIt

9、emsaveAs=newJMenuItem("另存为(A).”);JMenuItemexit=newJMenuItem("退出(X)");JMenuItemundo=newJMenuItem("撤销(U)");JMenuItemcut=newJMenuItem("剪切(T)");JMenuItemcopy=newJMenuItem("复制(C)");JMenuItempaste=newJMenuItem("粘贴(P)”);JMenuItemselectAll=newJMenuItem("

10、;全选(A)");JMenuItemtimeDate=newJMenuItem("时间/日期(D)");JCheckBoxMenuItemlineWrap=newJCheckBoxMenuItem("自动换行(M)");JMenuItemfonts=newJMenuItem(”字体.”);JMenuItemstatus=newJMenuItem("状态栏");JMenuItemabout=newJMenuItem("关于记事本(A)");3.2“文件”菜单操作的事件监听classListenlimplem

11、entsActionListener(/实现用于对文件进行操作的事件侦听器publicvoidactionPerformed(ActionEvente)(Objectsource=e.getSource();/打开文件事件if(source=open)(FileDialogopenFile=newFileDialog(th,"打开文件.",FileDialog.LOAD);openFile.setVisible(true);StringfilePath=openFile.getDirectory()+openFile.getFile();try(FileInputStrea

12、mfis=newFileInputStream(filePath);bytecontent=newbytefis.available();fis.read(content);text.setText(newString(content);text.setCaretPosition(0);if(openFile.getFile()!=null)(th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;fis.close();catch(Exceptionex)(ex.printStackTrace();opened

13、=true;/保存及另存为事件elseif(source=save|source=saveAs)(StringsavePath=openedPath;if(savePath=null|source=saveAs)(FileDialogsaveFile=newFileDialog(th,"保存文件.",FileDialog.SAVE);saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();try(FileOutputStreamfos=newFileOutputStream(

14、savePath);fos.write(text.getText().getBytes();fos.close();catch(Exceptionex)(ex.printStackTrace();if(source=save)openedPath=savePath;3.3“编辑”、“格式”等菜单的事件监听classListenimplementsActionListener(/实现用于一般操作的事件侦听器publicvoidactionPerformed(ActionEvente)(Objectsource=e.getSource();if(source=newFile)(text.setTe

15、xt("");th.setTitle(name);openedPath=null;opened=false;elseif(source=exit)System.exit(0);elseif(source=selectAll)text.selectAll();elseif(source=cut)text.cut();elseif(source=copy)text.copy();elseif(source=paste)text.paste();elseif(source=lineWrap)text.setLineWrap(!text.getLineWrap();elseif(s

16、ource=about)(Stringmessage="java记事本n版本0.01n版权所有2013pzhjsjnn本产品符合最终用户许可协议,授权给:npzhjsjn"JOptionPane.showMessageDialog(th,message,”关于记事本",JOptionPane.PLAIN_MESSAGEelseif(source=timeDate)DatenowTime=newDate();SimpleDateFormattimes=newSimpleDateFormat("HH:mmyyyy-MM-dd");text.inse

17、rt(times.format(nowTime),text.getCaretPosition();3.4异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。tryUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exceptione)System.err.println("Couldn'tus

18、ethesystemlookandfeel:"+e);4测试分析FnEhWFiRl好JET?i璋由mi,A|ficuhuir4HinWK图4.1“文件”菜单亍TT+wSffftccWilCr?l*S!-St-图4.2点击"另存为”运行情况"Mill«i>MV>eshuu.Ciri>q图4.3“编辑”菜单©1=#Jr普Krtfthff6-l亦米*£孝至国重点大学宵都知场荷易记等本程序,使用件,退出,寰制,帖贴,图4.5“查看”菜单记事本文崛F)碰(E)屯式(。)辞M目前很多的技术搔峨与及到了J此酒吉,Jwa语言是面向时

19、建编程,井昔宏到网络、多域程等重霓的蕊础知识,因此JivaiSW也是学习面向对象璃程和网貉娘程的透谓,此次保程设计主要通对煽写一个有单的记事本毛星碟,其常地搜、事件处刊,阳程停坞写,能踱谜。输1尊切等功熊中该程序主夷目图4.6“帮助”菜单5源程序清单* /*文本编辑器(模拟实现Windows记事本程序)Notepad.java模拟Windows的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观*/importimportimportimportimportimportjava.io.*;java.awt.*;java.awt.event.*;javax

20、.swing.*;java.util.Date;java.text.SimpleDateFormat;publicclassNotepadextendsJFrameJMenuBarmenub=newJMenuBar();JTextAreatext=newJTextArea();JMenufiles=newJMenu("文件(F)”);JMenuedit=newJMenu("编辑(E)");JMenuformats=newJMenu("格式(O)");JMenuscan=newJMenu(”查看(V)");JMenuhelp=newJM

21、enu("帮助(H)");JMenultemnewFile=newJMenuItem("新建(N)”);JMenultemopen=newJMenuItem("打开(O).");JMenultemsave=newJMenuItem("保存(S)");JMenultemsaveAs=newJMenuItem("另存为(A).”);JMenultemexit=newJMenuItem("退出(X)");JMenuItemundo=newJMenuItem("撤销(U)");JMe

22、nultemcut=newJMenuItem("剪切(T)");JMenultemcopy=newJMenuItem("复制(C)");JMenultempaste=newJMenuItem("粘贴(P)”);JMenultemselectAll=newJMenuItem("全选(A)");JMenultemtimeDate=newJMenuItem("时间/日期(D)");JCheckBoxMenultemlineWrap=newJCheckBoxMenuItem("自动换行(M)"

23、);JMenultemfonts=newJMenuItem(”字体.”);JMenuItemstatus=newJMenuItem("状态栏");JMenuItemabout=newJMenuItem("关于记事本(A)");JFrameth=this;Stringname;StringopenedPath=null;booleanopened=false;booleanreworked=false;/初始化窗体Notepad(Stringname)super(name);=name;intx,y;Dimensionsize=Toolk

24、it.getDefaultToolkit().getScreenSize();x=(size.width-600)/2;y=(size.height-400)/2;setSize(600,400);setLocation(x,y);/让程序界面显示在屏幕中央setMinimumSize(newDimension(250,150);setDefaultCloseOperation(EXIT_ON_CLOSE/初始化布局voidinit()files.setMnemonic('F');edit.setMnemonic('E');formats.setMnemonic

25、('O');scan.setMnemonic('V');help.setMnemonic('H');newFile.setMnemonic('N');open.setMnemonic('O');save.setMnemonic('S');saveAs.setMnemonic('A');exit.setMnemonic('X');undo.setMnemonic('U');cut.setMnemonic('T');copy.setMnem

26、onic('C');paste.setMnemonic('P');selectAll.setMnemonic('A');timeDate.setMnemonic('D');lineWrap.setMnemonic('M');about.setMnemonic('A');/为控件添加助记符newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK;open.setAccelerator(KeyStro

27、ke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MAS)K);save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MAS)K);exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MAS)K);cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MAS)K);copy.set

28、Accelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MAS)K);paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MAS)K);getKeyStroke(KeyEvent.VKgetKeyStroke("F5");selectAll.setAccelerator(KeyStroke._A,InputEvent.CTRL_MASK;timeDate.setAccelerator(KeyStroke./

29、为控件添加快捷键files.add(newFile);files.add(open);files.add(save);files.add(saveAs);files.addSeparator();files.add(exit);edit.add(undo);edit.addSeparator();edit.add(cut);edit.add(copy);edit.add(paste);edit.addSeparator();edit.add(selectAll);edit.add(timeDate);formats.add(lineWrap);formats.add(fonts);scan.a

30、dd(status);help.add(about);menub.add(files);menub.add(edit);menub.add(formats);menub.add(scan);menub.add(help);setJMenuBar(menub);getContentPane().add(newJScrollPane(text);Listenlisten=newListen();Listen1listen1=newListen1();newFile.addActionListener(listen);open.addActionListener(listen);save.addAc

31、tionListener(listen);saveAs.addActionListener(listen);exit.addActionListener(listen);cut.addActionListener(listen);copy.addActionListener(listen);paste.addActionListener(listen);selectAll.addActionListener(listen);timeDate.addActionListener(listen);lineWrap.addActionListener(listen);about.addActionL

32、istener(listen);open.addActionListener(listen1);save.addActionListener(listen1);saveAs.addActionListener(listen1);/为控件添加事件侦听器undo.setEnabled(false);fonts.setEnabled(false);status.setEnabled(false);/暂时没有实现的功能classListenimplementsActionListenerpublicvoidactionPerformed(ActionEvente)(Objectsource=e.get

33、Source();if(source=newFile)(text.setText("");th.setTitle(name);openedPath=null;opened=false;elseif(source=exit)System.exit(0);elseif(source=selectAll)text.selectAll();elseif(source=cut)text.cut();elseif(source=copy)text.copy();elseif(source=paste)text.paste();elseif(source=lineWrap)text.se

34、tLineWrap(!text.getLineWrap();elseif(source=about)(Stringmessage="java记事本n版本0.01n版权所有2013pzhjsjnn本产品符合最终用户许可协议,授权给:npzhjsjn"JOptionPane.showMessageDialog(th,message,”关于记事本"JOptionPane.PLAIN_MESSAGEelseif(source=timeDate)(DatenowTime=newDate();SimpleDateFormattimes=newSimpleDateFormat(

35、"HH:mmyyyy-MM-dd");text.insert(times.format(nowTime),text.getCaretPosition();classListen1implementsActionListener(/实现用于对文件进行操作的事件侦听器publicvoidactionPerformed(ActionEvente)(Objectsource=e.getSource();/打开文件事件if(source=open)(FileDialogopenFile=newFileDialog(th,”打开文件.",FileDialog.LOAD);op

36、enFile.setVisible(true);StringfilePath=openFile.getDirectory()+openFile.getFile();try(FileInputStreamfis=newFilelnputStream(filePath);bytecontent=newbytefis.available();fis.read(content);text.setText(newString(content);text.setCaretPosition(O);if(openFile.getFile()!=null)(th.setTitle(openFile.getFil

37、e()+name);openedPath=filePath;opened=true;fis.close();catch(Exceptionex)(ex.printStackTrace();opened=true;/保存及另存为事件elseif(source=save|source=saveAs)(StringsavePath=openedPath;if(savePath=null|source=saveAs)(FileDialogsaveFile=newFileDialog(th,"保存文件.",FileDialog.SAV;saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();try(FileOutputStreamfos=newFileOutputStream(savePath);fos.write(text.getText().getBytes();fos.close();catch(Exceptionex)(ex.printStackTrace();if(source=save)openedPath=savePath;pu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论