版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、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语言、 Java class、Java API、Java虚拟机组成。它具有简
3、单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java 支持多线程编程, Java 运行时系统在多线程同步方面具有成熟的解决方案。Java 的平台标准有Java ME, Java SE 和 Java EE 。 Java 发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java DevelopmentKit,NetBeans ,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit简称JDK 是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要
4、根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。1 需求分析1.1 需求分析现在网络上各种文本编辑器数不胜数,有EmEditor, UEStudio,GridinSoftNotepad,Notepad+ ,win32pad,SkimEdit,UniRed, xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方
5、面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的文本编辑器程序。1.2 功能设计本程序要构建的记事本程序参照了Windows 操作系统的记事本工具,其功能有以下几个方面:1. 菜单中有“文件” ,“编辑”,“格式”“帮助”三个主菜单。2. “文件”有“打开” “保存”“另存为”“退出”四个子菜单:分别用于打开文件,保存文件,另存为文件,退出记事本。3. “编辑”中有“撤销” “剪切”“复制”“粘贴”“刷除”五个子菜单:用于撤销上一步操作,剪切文字,复制文字,粘贴文字,刷出文字。4. “格式”中有“自动换行”子菜单:用来对文字的自动换行;5.
6、 “帮助”菜单中有“关于”子菜单关于文本编辑器程序的制作等信息2.概要设计2.1 程序设计思路在本程序中, 设计了一个菜单栏和文本内容区和状态栏。设计过程中用到了JScollPane,JLable,JMenu,JTextArea ,JFileChooser,UndoManager 等。JMenu用来制作菜单,菜单包括“文件”“编辑”“格式”“帮助”。JTextArea主要用来输入文本 ,JLable主要用来创建状态栏。2.2 程序运行界面2.3 程序相关说明整个记事本分为2 快:菜单栏和文本输入区和状态栏。本程序中首先定义一个 JNotePadUI 类继承 JFrame 作为最底层容器。 te
7、xtarea 为程序文本输入区; MenuBar 为菜单栏;要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener现了 ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事实件。另外,还用来WindowListener来监听处理容器关闭触发的事件,承了 WindowsAdapter 类并覆盖了WindowsClosing方法。WindowListener继3.程序详细设计与分析3.1. 初始化组件JMenuBar menuBar = new JMenuBar();textA
8、rea = 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(););menuSave
9、As.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) undo
10、(););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(new ActionList
11、ener() 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(););menuAbout.addActionListener(
12、new ActionListener() public void actionPerformed(ActionEvent e) 显示对话框JOptionPane.showOptionDialog(null,""程序名称程序设计:n:n记事本 n" +黄峰n" +"简介 :n一个简单的文字编辑器n" +"可作为验收Java的实现对象n" +" ","关于JNotePad",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_ME
13、SSAGE,null, null, null););3.3. 异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到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 Fi
14、leWriter(file);buf.write(textArea.getText();buf.close();stateBar.setText("未修改 ");catch(IOException e) JOptionPane.showMessageDialog(null, e.toString(),"写入文件失败", JOptionPane.ERROR_MESSAGE);4测试分析点击“编辑”运行情况“文件”菜单中的“打开”对话框“帮助”的“关于”对话框5课程设计总结经过差不多两个星期的努力,基本上完成我的Java 课程设计 简单的文本编辑器程序,也基
15、本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java 及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。但是,设计过程中也存在一些问题,本来一开始想给这个文本编辑器程序加上工具栏快捷按钮,以及添加其他具体功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾
16、。6. 参考文献1.张利国等编著, Java 实用案例教程,清华大学出版社,2003.102. 何 梅 等编著, Java 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 me
17、nuOpen;private JMenuItem menuSave;private JMenuItem menuSaveAs;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 menuWrapl
18、ine;private JMenu= new JMenuItem(" 打开 ");menuSave = new JMenuItem(" 保存 ");menuSaveAs = new JMenuItem(" 另存为 ");menuQuit = new JMenuItem("退出 ");fileMenu.add(menuOpen);fileMenu.addSeparator();分隔线fileMenu.add(menuSave);fileMenu.add(menuSaveAs);fileMenu.addSeparato
19、r();分隔线fileMenu.add(menuQuit);设置编辑菜单JMenu editMenu = new JMenu("编辑 (E)");menuUndo = new JMenuItem("撤销 ");menuCut = new JMenuItem("剪切 ");menuCopy = new JMenuItem(" 复制 ");menuPaste = new JMenuItem(" 粘贴 ");menuDelete = new JMenuItem(" 刷除 ");ed
20、itMenu.add(menuUndo);editMenu.addSeparator();editMenu.add(menuCut);editMenu.add(menuCopy);editMenu.add(menuPaste);editMenu.add(menuDelete);设置格式菜单JMenu formMenu = new JMenu("格式 (O)");menuWrapline = new JMenuItem("自动换行 ");formMenu.add(menuWrapline);设置帮助菜单JMenu .addActionListener(ne
21、w ActionListener() public void actionPerformed(ActionEvent e) openFile(););菜单-保存menuSave.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) saveFile(););菜单- 另存为menuSaveAs.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) saveFileAs(););菜
22、单-退出menuQuit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) closeFile(););菜单-撤销menuUndo.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) undo(););textArea.getDocument().addUndoableEditListener(undomg);菜单-剪切menuCut.addActionListener(
23、new ActionListener() public void actionPerformed(ActionEvent e) cut(););菜单-复制menuCopy.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) copy(););菜单-粘贴menuPaste.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) paste(););菜单-刷除menuDelete.
24、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) delete(););菜单- 自动换行menuWrapline.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) wrapline(););菜单-关于menuAbout.addActionListener(new ActionListener() public void actionPerformed(ActionEve
25、nt e) 显示对话框JOptionPane.showOptionDialog(null," 程序名称:n记事本n" +" 程序设计:n黄峰n" +" 简介 :n一个简单的文字编辑器n" +"可作为验收Java 的实现对象 n" +" "," 关于 JNotePad",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null, null, null););编辑区键盘事件textArea.addKeyList
26、ener(new KeyAdapter() public void keyTyped(KeyEvent e) processTextArea(); );private void openFile() if(isCurrentFileSaved() 文件是否为保存状态open();打开else 显示对话框int option = JOptionPane.showConfirmDialog(null, " 文件已修改,是否保存?"," 保存文件? ", JOptionPane.YES_NO_OPTION,JOptionPane.W ARNING_MESSAG
27、E, null);switch(option) 确认文件保存case JOptionPane.YES_OPTION:saveFile();保存文件break;放弃文件保存case JOptionPane.NO_OPTION:open();break;private boolean isCurrentFileSaved() if(stateBar.getText().equals(" 未修改 ") return false;else return true;private void open() fileChooser 是 JFileChooser 的实例显示文件选取的对话框
28、int option = fileChooser.showDialog(null, null);使用者按下确认键if(option = JFileChooser.APPROVE_OPTION) try 开启选取的文件BufferedReader buf =new BufferedReader(new FileReader(fileChooser.getSelectedFile();设定文件标题setTitle(fileChooser.getSelectedFile().toString();清除前一次文件textArea.setText("");设定状态栏stateBar.
29、setText("未修改 ");取得系统相依的换行字符String lineSeparator = System.getProperty("line.separator");读取文件并附加至文字编辑区String text;while(text = buf.readLine() != null) textArea.append(text);textArea.append(lineSeparator);buf.close();catch(IOException e) JOptionPane.showMessageDialog(null, e.toStrin
30、g()," 开启文件失败", 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();设定状态栏为未
31、修改stateBar.setText("未修改 ");catch(IOException e) JOptionPane.showMessageDialog(null, e.toString()," 写入文件失败", JOptionPane.ERROR_MESSAGE);private void saveFileAs() 显示文件对话框int option = fileChooser.showSaveDialog(null);如果确认选取文件if(option = JFileChooser.APPROVE_OPTION) 取得选择的文件File file = fileChooser.getSelecte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 担保借用合同
- 邯郸钻具项目可行性研究报告
- 钙锌稳定剂项目可行性研究报告建议书范文
- 银川铸钢闸阀项目可行性研究报告范文参考
- 高等数学导数的概念教案
- 鹤壁纳米碳酸钙项目可行性研究报告
- 黑龙江省某镇垃圾处理工程可行性研究报告( P75)
- 单片机设计与开发 教案要点
- 中国计算机设计大赛答辩方案
- 广西中考物理5年(2021-2025)真题分类汇编:专题03 光现象(解析版)
- 不典型中枢性眩晕病例分享
- 楼梯销售合同范本
- 河南省周口市郸城县2024-2025学年九年级上学期期中化学试卷
- 电力输电线路施工安全培训
- 打印机相关项目实施方案
- 制茶机相关项目实施方案
- 工程签证单完整版
- 数独题目高级50题(后附答案)
- 《射频识别技术及应用》课件13.56 MHz RFID技术
- 中医师承跟师笔记50篇
- 演讲与口才-形成性考核二-国开(HB)-参考资料
评论
0/150
提交评论