1、完整版Java毕业课程设计文档Java课程设计报告 题 目:文本编辑器 年级专业:07级信息与计算科学 学 号: 学生姓名: 周 勇 李 朝 黄 峰 陈爽 指导老师: 彭 胜 完成时间:2010年 7月 1 日目 录摘要 3前言 31 需求分析 41.1需求分析 41.2功能设计 42 概要设计 42.1程序设计思路 42.2程序运行界面 52.3程序相关说明 53 程序详细设计与分析 63.1初始化组件 73.2构建菜单栏及其下拉菜单及其事件监听 73.3异常处理 84测试分析 95课程设计总结 116参考文献 117. 附录 12 文本编辑器程序的设计摘要 该报告中的程序是使用Java程序
2、编写,能够进行输入文字操作,并具有,打开文件,保存文件,另存为,退出,撤消,剪切,复制,粘贴,删除,自动换行,关于等功能,该程序主要用到了Java swing包和事件监听等。关键字:文本编辑器,Java语言,JCreator前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Jav
3、a 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是大多开发工具的基础。以上的每种开发
4、工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。1需求分析 1.1需求分析现在网络上各种文本编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad+,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能
5、太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的文本编辑器程序。1.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:1. 菜单中有“文件”,“编辑”,“格式”“帮助”三个主菜单。2. “文件”有“打开”“保存”“另存为”“退出”四个子菜单:分别用于打开文件,保存文件,另存为文件,退出记事本。3. “编辑”中有“撤销”“剪切”“复制”“粘贴”“刷除”五个子菜单:用于撤销上一步操作,剪切文字,复制文字,粘贴文字,刷出文字。4. “格式”中有“自动换
6、行”子菜单:用来对文字的自动换行;5. “帮助”菜单中有“关于”子菜单关于文本编辑器程序的制作等信息2.概要设计2.1程序设计思路在本程序中,设计了一个菜单栏和文本内容区和状态栏。设计过程中用到了JScollPane,JLable,JMenu,JTextArea,JFileChooser,UndoManager等。JMenu用来制作菜单,菜单包括“文件”“编辑”“格式”“帮助”。JTextArea主要用来输入文本,JLable主要用来创建状态栏。2.2程序运行界面2.3程序相关说明整个记事本分为2快:菜单栏和文本输入区和状态栏。本程序中首先定义一个JNotePadUI类继承JFrame作为最底
7、层容器。1 textarea为程序文本输入区;2 MenuBar为菜单栏;3 要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。3.程序详细设计与分析3.1.初始化组件JMenuBar menuBar = new JMenuBar();
8、textArea = new JTextArea();stateBar = new JLabel(未修改);3.2.构建菜单栏及其下拉菜单及其事件监听 menuOpen.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) openFile(); ); menuSave.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile(); ); menuSaveAs
9、.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFileAs(); ); menuQuit.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) closeFile(); ); menuUndo.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e)
10、 undo(); ); textArea.getDocument().addUndoableEditListener(undomg); menuCut.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) cut(); ); menuCopy.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) copy(); ); menuPaste.addActionListener(
11、 new ActionListener() public void actionPerformed(ActionEvent e) paste(); ); menuDelete.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) delete(); ); menuWrapline.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) wrapline(); ); menuA
12、bout.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) 显示对话框 JOptionPane.showOptionDialog(null, 程序名称:n 记事本 n + 程序设计:n 黄峰 n + 简介:n 一个简单的文字编辑器n + 可作为验收Java的实现对象n + , 关于JNotePad, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); ); 3.3.异常处理
13、在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。private void saveFile() File file = new File(getTitle(); if(!file.exists() saveFileAs(); else try BufferedWriter buf = new BufferedWriter( new FileWriter(file); buf.write(textArea.ge
14、tText(); buf.close(); stateBar.setText(未修改); catch(IOException e) JOptionPane.showMessageDialog(null, e.toString(), 写入文件失败, JOptionPane.ERROR_MESSAGE); 4测试分析点击“编辑”运行情况 “文件”菜单中的“打开”对话框 “帮助”的“关于”对话框5课程设计总结经过差不多两个星期的努力,基本上完成我的Java课程设计简单的文本编辑器程序,也基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步
15、巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。但是,设计过程中也存在一些问题,本来一开始想给这个文本编辑器程序加上工具栏快捷按钮,以及添加其他具体功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。6.参考文献1.张利国 等编著,Java实用案例教程,清华大学出版社,2003.102.何 梅 等编著,Java
16、 Applet,清华大学出版社,2003.63.张白一 崔尚森 编著,面向对象程序设计Java,西安电子科技大学出版社,2006.17附录import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import javax.swing.undo.*;public class JNotePadUI extends JFrame private JMenuItem menuOpen; private JMenuItem menuSave; private JMenuItem menuSaveAs;
17、private JMenuItem menuQuit; private JMenu editMenu; private JMenuItem menuUndo; private JMenuItem menuCut; private JMenuItem menuCopy; private JMenuItem menuPaste; private JMenuItem menuDelete; private JMenu formmenu; private JMenuItem menuWrapline; private JMenu = new JMenuItem(打开); menuSave = new
18、JMenuItem(保存); menuSaveAs = new JMenuItem(另存为); menuQuit = new JMenuItem(退出); fileMenu.add(menuOpen); fileMenu.addSeparator(); 分隔线 fileMenu.add(menuSave); fileMenu.add(menuSaveAs); fileMenu.addSeparator(); 分隔线 fileMenu.add(menuQuit); 设置编辑菜单 JMenu editMenu = new JMenu(编辑(E); menuUndo = new JMenuItem(
19、撤销); menuCut = new JMenuItem(剪切); menuCopy = new JMenuItem(复制); menuPaste = new JMenuItem(粘贴); menuDelete = new JMenuItem(刷除); editMenu.add(menuUndo); editMenu.addSeparator(); editMenu.add(menuCut); editMenu.add(menuCopy); editMenu.add(menuPaste); editMenu.add(menuDelete); 设置格式菜单 JMenu formMenu = ne
20、w JMenu(格式(O); menuWrapline = new JMenuItem(自动换行); formMenu.add(menuWrapline); 设置帮助菜单 JMenu .addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) openFile(); ); 菜单 - 保存 menuSave.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile(
21、); ); 菜单 - 另存为 menuSaveAs.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFileAs(); ); 菜单 - 退出 menuQuit.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) closeFile(); ); 菜单 - 撤销 menuUndo.addActionListener( new ActionListener() p
22、ublic void actionPerformed(ActionEvent e) undo(); ); textArea.getDocument().addUndoableEditListener(undomg); 菜单 - 剪切 menuCut.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) cut(); ); 菜单 - 复制 menuCopy.addActionListener( new ActionListener() public void actionPerform
23、ed(ActionEvent e) copy(); ); 菜单 - 粘贴 menuPaste.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) paste(); ); 菜单 - 刷除 menuDelete.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) delete(); ); 菜单 - 自动换行 menuWrapline.addActionListener( n
24、ew ActionListener() public void actionPerformed(ActionEvent e) wrapline(); ); 菜单 - 关于 menuAbout.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) 显示对话框 JOptionPane.showOptionDialog(null, 程序名称:n 记事本 n + 程序设计:n 黄峰 n + 简介:n 一个简单的文字编辑器n + 可作为验收Java的实现对象n + , 关于JNotePad,
25、JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); ); 编辑区键盘事件 textArea.addKeyListener( new KeyAdapter() public void keyTyped(KeyEvent e) processTextArea(); ); private void openFile() if(isCurrentFileSaved() 文件是否为保存状态 open(); 打开 else 显示对话框 int option = JOptionPane.showCon
26、firmDialog( null, 文件已修改,是否保存?, 保存文件?, JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null); switch(option) 确认文件保存 case JOptionPane.YES_OPTION: saveFile(); 保存文件 break; 放弃文件保存 case JOptionPane.NO_OPTION: open(); break; private boolean isCurrentFileSaved() if(stateBar.getText().equals(未修改) ret
27、urn false; else return true; private void open() fileChooser 是 JFileChooser 的实例 显示文件选取的对话框 int option = fileChooser.showDialog(null, null); 使用者按下确认键 if(option = JFileChooser.APPROVE_OPTION) try 开启选取的文件 BufferedReader buf = new BufferedReader( new FileReader( fileChooser.getSelectedFile(); 设定文件标题 set
28、Title(fileChooser.getSelectedFile().toString(); 清除前一次文件 textArea.setText(); 设定状态栏 stateBar.setText(未修改); 取得系统相依的换行字符 String lineSeparator = System.getProperty(line.separator); 读取文件并附加至文字编辑区 String text; while(text = buf.readLine() != null) textArea.append(text); textArea.append(lineSeparator); buf.c
29、lose(); catch(IOException e) JOptionPane.showMessageDialog(null, e.toString(), 开启文件失败, JOptionPane.ERROR_MESSAGE); private void saveFile() 从标题栏取得文件名称 File file = new File(getTitle(); 若指定的文件不存在 if(!file.exists() 执行另存为 saveFileAs(); else try 开启指定的文件 BufferedWriter buf = new BufferedWriter( new FileWriter(file); 将文字编辑区的文字写入文件 buf.write(textArea.getText(); buf.close(); 设定状态栏为未修改 stateBar.setText(未修改); catch
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1