java记事本课程设计论文附源码_第1页
java记事本课程设计论文附源码_第2页
java记事本课程设计论文附源码_第3页
java记事本课程设计论文附源码_第4页
java记事本课程设计论文附源码_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

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

2、科学出版社2陈国君等.Java程序设计基础(第二版).清华大学出版社3 Deitel.Java大学基础教程(第六版).电子工业出版社 4 MaryCampione.Java语言导学(第四版).机械工业出版社5 Y.Daniel Liang.Java语言程序设计基础篇(第六版). 机械工业出版社6 Kathy Sierra.Head First Java(第二版).东南大学出版社4、课程设计工作进度计划序号时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务

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

4、g 目 录摘 要11 需求分析31.1需求分析31.2功能设计32 概要分析42.1概要设计思想42.2程序运行界面42.3程序模块说明52.4流程图62.5程序相关说明73 程序详细设计与分析83.1构建菜单栏及其下拉菜单83.2“文件”菜单操作的事件监听83.3“编辑”、“格式”等菜单的事件监听103.4异常处理114 测试分析125 源程序清单15结 论22参 考 文 献23231 需求分析1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad+,win32pad ,SkimEdit,UniRed,

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

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

7、行界面图2.1 记事本程序运行界面2.3程序模块说明implementsNotepadextendsActionListenerJFrame图2.2 类Notepad模块新建打开保存另存为剪切复制粘贴全选自动换行字体状态栏关于记事本退出时间日期文件编辑格式帮助查看Notepad的构造方法初始化容器组件添加事件监听菜单栏文字输入区初始化初始化图2.3 程序详细模块2.4流程图打开保存另存为退出剪切复制粘贴全选时间日期新建字体自动换行状态栏关于记事本于关闭或退出程序opensaveString savePathExit()text.cut()text.copy()text.pastetext.se

8、lectAll()text.ins.ertString messagestatus.setEnabledfonts.setEnabledtext.setLineWraplnewFile启动程序输入文字FalseFalse图2.4 程序流程图2.5程序相关说明整个记事本分为2快:菜单栏和内容输入区。本程序中首先定义一个Notepad类继承JFrame作为最底层容器。(1)、text为程序文本输入区。(2)、Menu为菜单栏。(3)、要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中Listen和Listen1实现了Acti

9、onListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。3 程序详细设计与分析3.1构建菜单栏及其下拉菜单JMenu files=new JMenu("文件(F)");JMenu edit=new JMenu("编辑(E)"); JMenu formats=new JMenu("格式(O)");JMenu scan=new JMenu("查看(V)");JMenu help=new JMenu("帮助(H)");JMenuItem newFile=new JMenuItem

10、("新建(N)");JMenuItem open=new JMenuItem("打开(O).");JMenuItem save=new JMenuItem("保存(S)");JMenuItem saveAs=new JMenuItem("另存为(A).");JMenuItem exit=new JMenuItem("退出(X)");JMenuItem undo=new JMenuItem("撤销(U)");JMenuItem cut=new JMenuItem("剪

11、切(T)");JMenuItem copy=new JMenuItem("复制(C)");JMenuItem paste=new JMenuItem("粘贴(P)");JMenuItem selectAll=new JMenuItem("全选(A)");JMenuItem timeDate=new JMenuItem("时间/日期(D)");JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem("自动换行(M)");JMenuItem fon

12、ts=new JMenuItem("字体.");JMenuItem status=new JMenuItem("状态栏");JMenuItem about=new JMenuItem("关于记事本(A)");3.2“文件”菜单操作的事件监听class Listen1 implements ActionListener/实现用于对文件进行操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();/打开文件事件if(source=open)F

13、ileDialog openFile=new FileDialog(th,"打开文件.",FileDialog.LOAD);openFile.setVisible(true);String filePath=openFile.getDirectory()+openFile.getFile();tryFileInputStream fis=new FileInputStream(filePath);byte content=new bytefis.available();fis.read(content);text.setText(new String(content);te

14、xt.setCaretPosition(0);if(openFile.getFile()!=null)th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;fis.close();catch(Exception ex)ex.printStackTrace();opened=true;/保存及另存为事件else if(source=save|source=saveAs)String savePath=openedPath;if(savePath=null|source=saveAs)FileDialog save

15、File=new FileDialog(th,"保存文件.",FileDialog.SAVE);saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();tryFileOutputStream fos=new FileOutputStream(savePath);fos.write(text.getText().getBytes();fos.close();catch(Exception ex)ex.printStackTrace();if(source=save)opened

16、Path=savePath;3.3“编辑”、“格式”等菜单的事件监听class Listen implements ActionListener/实现用于一般操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();if(source=newFile)text.setText("");th.setTitle(name);openedPath=null;opened=false;else if(source=exit)System.exit(0);else if(source=s

17、electAll)text.selectAll();else if(source=cut)text.cut();else if(source=copy)text.copy();else if(source=paste)text.paste();else if(source=lineWrap)text.setLineWrap(!text.getLineWrap();else if(source=about)String message="java 记事本n版本 0.01n版权所有 2013 pzhjsjnn本产品符合最终用户许可协议,授权给:npzhjsjn"JOptionP

18、ane.showMessageDialog(th,message,"关于 记事本",JOptionPane.PLAIN_MESSAGE);else if(source=timeDate)Date nowTime=new Date();SimpleDateFormat times=new SimpleDateFormat("HH:mm yyyy-MM-dd");text.insert(times.format(nowTime),text.getCaretPosition();3.4异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就

19、需要在程序中用到Java异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。try UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName(); catch (Exception e) System.err.println("Couldn't use the system look and feel:"+e);4 测试分析图4.1 “文件”菜单图4.2 点击“另存为”运行情况图4.3 “编辑”菜单图4

20、.4 插入“时间/日期”图4.5 “查看”菜单图4.6 “帮助”菜单5 源程序清单/*文本编辑器(模拟实现Windows记事本程序)*Notepad.java*模拟Windows的记事本程序,编写一个记事本。*要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。*/import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Date;import java.text.SimpleDateFormat;public class Notepad exte

21、nds JFrameJMenuBar menub=new JMenuBar();JTextArea text=new JTextArea();JMenu files=new JMenu("文件(F)");JMenu edit=new JMenu("编辑(E)"); JMenu formats=new JMenu("格式(O)");JMenu scan=new JMenu("查看(V)");JMenu help=new JMenu("帮助(H)");JMenuItem newFile=new JM

22、enuItem("新建(N)");JMenuItem open=new JMenuItem("打开(O).");JMenuItem save=new JMenuItem("保存(S)");JMenuItem saveAs=new JMenuItem("另存为(A).");JMenuItem exit=new JMenuItem("退出(X)");JMenuItem undo=new JMenuItem("撤销(U)");JMenuItem cut=new JMenuItem(

23、"剪切(T)");JMenuItem copy=new JMenuItem("复制(C)");JMenuItem paste=new JMenuItem("粘贴(P)");JMenuItem selectAll=new JMenuItem("全选(A)");JMenuItem timeDate=new JMenuItem("时间/日期(D)");JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem("自动换行(M)");JMenuI

24、tem fonts=new JMenuItem("字体.");JMenuItem status=new JMenuItem("状态栏");JMenuItem about=new JMenuItem("关于记事本(A)");JFrame th=this;String name;String openedPath=null;boolean opened=false;boolean reworked=false;/初始化窗体Notepad(String name)super(name);=name;int x,y;Dime

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

26、);formats.setMnemonic('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('

27、;T');copy.setMnemonic('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.

28、setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK);exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK);cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.C

29、TRL_MASK);copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK);paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK);selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK);timeDate.setAccelerator(KeyStroke.getKeyStroke(

30、"F5");/为控件添加快捷键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.

31、add(fonts);scan.add(status);help.add(about);menub.add(files);menub.add(edit);menub.add(formats);menub.add(scan);menub.add(help);setJMenuBar(menub); getContentPane().add(new JScrollPane(text);Listen listen=new Listen();Listen1 listen1=new Listen1();newFile.addActionListener(listen);open.addActionList

32、ener(listen);save.addActionListener(listen);saveAs.addActionListener(listen);exit.addActionListener(listen);cut.addActionListener(listen);copy.addActionListener(listen);paste.addActionListener(listen);selectAll.addActionListener(listen);timeDate.addActionListener(listen);lineWrap.addActionListener(l

33、isten);about.addActionListener(listen);open.addActionListener(listen1);save.addActionListener(listen1);saveAs.addActionListener(listen1);/为控件添加事件侦听器undo.setEnabled(false);fonts.setEnabled(false); status.setEnabled(false); /暂时没有实现的功能class Listen implements ActionListener/实现用于一般操作的事件侦听器public void act

34、ionPerformed(ActionEvent e)Object source=e.getSource();if(source=newFile)text.setText("");th.setTitle(name);openedPath=null;opened=false;else if(source=exit)System.exit(0);else if(source=selectAll)text.selectAll();else if(source=cut)text.cut();else if(source=copy)text.copy();else if(source

35、=paste)text.paste();else if(source=lineWrap)text.setLineWrap(!text.getLineWrap();else if(source=about)String message="java 记事本n版本 0.01n版权所有 2013 pzhjsjnn本产品符合最终用户许可协议,授权给:npzhjsjn"JOptionPane.showMessageDialog(th,message,"关于 记事本",JOptionPane.PLAIN_MESSAGE);else if(source=timeDate

36、)Date nowTime=new Date();SimpleDateFormat times=new SimpleDateFormat("HH:mm yyyy-MM-dd");text.insert(times.format(nowTime),text.getCaretPosition();class Listen1 implements ActionListener/实现用于对文件进行操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();/打开文件事件if(source

37、=open)FileDialog openFile=new FileDialog(th,"打开文件.",FileDialog.LOAD);openFile.setVisible(true);String filePath=openFile.getDirectory()+openFile.getFile();tryFileInputStream fis=new FileInputStream(filePath);byte content=new bytefis.available();fis.read(content);text.setText(new String(cont

38、ent);text.setCaretPosition(0);if(openFile.getFile()!=null)th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;fis.close();catch(Exception ex)ex.printStackTrace();opened=true;/保存及另存为事件else if(source=save|source=saveAs)String savePath=openedPath;if(savePath=null|source=saveAs)FileDialog saveFile=new FileDialog(th,"保存文件.",FileDialog.SAVE);saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();tryFileOutputStream fos=new FileOutputStream(savePath);fos.write(text.getText().getBytes();fos.close();catch(Exception ex)ex.printStackTrace();if(sour

温馨提示

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

评论

0/150

提交评论