洛阳理工学院课程设计报告课程名称面向对象程序设计设计题目简易记事本专业计算机科学与技术班级B170402学号B17033333姓名徐益完成日期2019.6.21洛阳理工学院课程设计报告摘要该报告中的记事本程序是使用Java语言编写,能够对记事本进行输入文字,以及新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等操作。
其界面主要采用了Java swing包,该程序编程由Eclipse软件完成。
Swing是一个为java设计的GUI工具包。
Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
所以只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
关键字:记事本,Java语言,Swing包,图形用户界面。
目录1.前言 (1)2.需求分析 (2)2.1需求分析 (2)2.2 功能设计 (2)3.概要设计 (3)3.1 程序设计思路 (3)3.2 程序运行界面 (3)3.3 模块说明图 (3)3.4 程序相关说明 (4)3.5 程序流程图 (5)4. 程序详细设计 (6)4.1 初始化组件 (6)4.2 构建菜单栏 (6)4.3 “文件”菜单的事件监听 (7)4.4 “编辑”菜单的事件监听 (8)4.5 异常处理 (8)5.测试分析 (10)6.总结 (13)1.前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。
后来它的开发者们发现它还可以被用于更大范围的Internet上。
1995年,Java语言的名字从Oak编程了Java。
1997年J2SE1.1发布。
1998年J2SE1.2发布,标志Java2的诞生。
十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。
Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。
它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。
Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
Java的平台标准有Java ME,Java SE和Java EE。
Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。
目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse 等。
其中Java Development Kit 简称JDK是大多开发工具的基础。
以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的Eclipse开发工具。
2.需求分析2.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
2.2 功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)菜单中有“文件”、“编辑”、“关于”三个主菜单。
(2)“文件”有“新建”、“打开”、“保存”、“退出”四个子菜单,分别用于新建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”、“复制”、“粘贴”、“颜色”三个子菜单,分别用于剪切文字,复制文字,粘贴文字。
增加了“颜色”子菜单来对文字进行设置。
(4)“关于”菜单中有关于记事本程序的制作日期,作者等信息。
3.概要设计3.1 程序设计思路在本程序中,设计了一个菜单栏和文本内容区。
设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“关于”。
JTextPane主要用来输入文本。
为了加入颜色的设置,所以加了一个JColorChooser组件。
3.2 程序运行界面(图1)3.3 模块说明图(图2)在图2中,构造一个mynotepad类时要做三件事情,分别是初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器。
(图3)在图3中,构造一个mynotepad类时要做三件事情,分别是初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器。
3.4 程序相关说明整个记事本分为2快:菜单栏和内容输入区。
本程序中首先定义一个mynotepad类继承JFrame作为最底层容器。
(1)Textcontent为程序文本输入区。
(2)Menu为菜单栏。
(3)AboutDialog为关于对话框。
(4)要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。
3.5 程序流程图(图4)4. 程序详细设计4.1 初始化组件initTextContent();initMenu();initAboutDialog();4.2 构建菜单栏JMenu[] menus=new JMenu[]{new JMenu("文件"),new JMenu("编辑"),new JMenu("关于")};J MenuItem optionofmenu[][]=new JMenuItem[][]{{ new JMenuItem("新建"),new JMenuItem("打开"),new JMenuItem("保存"),new JMenuItem("退出")},{new JMenuItem("复制"),new JMenuItem("剪切"),new JMenuItem("粘贴"),new JMenuItem("颜色")},{new JMenuItem("关于")}};4.3 “文件”菜单的事件监听ActionListener action=new ActionListener(){public void actionPerformed(ActionEvent e){String name = e.getActionCommand();JMenuItem MI=(JMenuItem)e.getSource();if("新建".equals(name)){content.setText("");file=null;}else if("打开".equals(name)){if(file !=null)openfile.setSelectedFile(file);intreturnVal=openfile.showOpenDialog(mynotepad.this);if(returnVal==JFileChooser.APPROVE_OPTION){file=openfile.getSelectedFile();unfold();}}else if("保存".equals(name)){if(file!=null) openfile.setSelectedFile(file);int returnVal=openfile.showSaveDialog(mynotepad.this);if(returnVal==JFileChooser.APPROVE_OPTION){file=openfile.getSelectedFile();saving();}}else if("退出".equals(name)){mynotepad f=new mynotepad();int s=JOptionPane.showConfirmDialog(f,"退出?","退出",JOptionPane.YES_NO_OPTION);4.4 “编辑”菜单的事件监听else if("剪切".equals(name)){content.cut();}else if("复制".equals(name)){content.copy();}else if("粘贴".equals(name)){content.paste();}else if("颜色".equals(name)){color=JColorChooser.showDialog(mynotepad.this,"",color);content.setForeground(color);4.5 异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。
本程序中选用的异常处理机制是try,catch。
捕获处理异常的第一步是用try选定要监控的异常范围,try 后跟随catch代码块。
saving(){try{FileWriter Writef=new FileWriter(file);Writef.write(content.getText());Writef.close();}catch(Exception e){e.printStackTrace();}}void unfold(){try{FileReader Readf=new FileReader(file);int len=(int)file.length();char []buffer=new char[len];Readf.read(buffer,0,len);Readf.close();content.setText(new String(buffer));}catch(Exception e){e.printStackTrace();} }5.测试分析(图5:点击“文件”运行情况)(图6:点击“文件”中的“打开”运行情况)(图7:点击“文件”中的“保存”运行情况)(图8:点击“编辑”运行情况)(图9:点击“编辑”中的“颜色”运行情况)(图10:点击“关于”运行情况)6.总结通过这次对记事本的设计和开发,我学会了将书本上的理论知识运用到实践中,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。