完整版Java毕业课程设计文档.docx
- 文档编号:1664244
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:22
- 大小:98.51KB
完整版Java毕业课程设计文档.docx
《完整版Java毕业课程设计文档.docx》由会员分享,可在线阅读,更多相关《完整版Java毕业课程设计文档.docx(22页珍藏版)》请在冰点文库上搜索。
完整版Java毕业课程设计文档
Java课程设计报告
题目:
文本编辑器
年级专业:
07级信息与计算科学
学号:
学生姓名:
周勇李朝黄峰陈爽
指导老师:
彭胜
完成时间:
2010年7月1日
目录
摘要3
前言3
1需求分析4
1.1需求分析4
1.2功能设计4
2概要设计4
2.1程序设计思路4
2.2程序运行界面5
2.3程序相关说明5
3程序详细设计与分析6
3.1初始化组件7
3.2构建菜单栏及其下拉菜单及其事件监听7
3.3异常处理8
4.测试分析9
5.课程设计总结11
6.参考文献11
7.附录12
文本编辑器程序的设计
摘要
该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有,打开文件,保存文件,另存为,退出,撤消,剪切,复制,粘贴,删除,自动换行,关于等功能,该程序主要用到了Javaswing包和事件监听等。
关键字:
文本编辑器,Java语言,JCreator
前言
Java的前身是Oak,它一开始只是被应用于消费性电子产品中。
后来它的开发者们发现它还可以被用于更大范围的Internet上。
1995年,Java语言的名字从Oak编程了Java。
1997年J2SE1.1发布。
1998年J2SE1.2发布,标志Java2的诞生。
十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。
Java的体系结构由Java语言、Javaclass、JavaAPI、Java虚拟机组成。
它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。
Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
Java的平台标准有JavaME,JavaSE和JavaEE。
Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。
目前在众多的支持Java的开发工具中主要的7有JavaDevelopmentKit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。
其中JavaDevelopmentKit简称JDK是大多开发工具的基础。
以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。
1需求分析
1.1需求分析
现在网络上各种文本编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad++,win32pad,SkimEdit,UniRed,xint。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:
有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的文本编辑器程序。
1.2功能设计
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
1.菜单中有“文件”,“编辑”,“格式”“帮助”三个主菜单。
2.“文件”有“打开”“保存”“另存为”“退出”四个子菜单:
分别用于打开文件,保存文件,另存为文件,退出记事本。
3.“编辑”中有“撤销”“剪切”“复制”“粘贴”“刷除”五个子菜单:
用于撤销上一步操作,剪切文字,复制文字,粘贴文字,刷出文字。
4.“格式”中有“自动换行”子菜单:
用来对文字的自动换行;
5.“帮助”菜单中有“关于”子菜单关于文本编辑器程序的制作等信息
2.概要设计
2.1程序设计思路
在本程序中,设计了一个菜单栏和文本内容区和状态栏。
设计过程中用到了JScollPane,JLable,JMenu,JTextArea,JFileChooser,UndoManager等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“格式”“帮助”。
JTextArea主要用来输入文本,JLable主要用来创建状态栏。
2.2程序运行界面
2.3程序相关说明
整个记事本分为2快:
菜单栏和文本输入区和状态栏。
本程序中首先定义一个JNotePadUI类继承JFrame作为最底层容器。
1 textarea为程序文本输入区;
2 MenuBar为菜单栏;
3 要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。
3.程序详细设计与分析
3.1.初始化组件
JMenuBarmenuBar=newJMenuBar();
textArea=newJTextArea();
stateBar=newJLabel("未修改");
3.2.构建菜单栏及其下拉菜单及其事件监听
menuOpen.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){openFile();}
}
);
menuSave.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){saveFile();}
}
);
menuSaveAs.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){saveFileAs();}
}
);
menuQuit.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){closeFile();
}
}
);
menuUndo.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){undo();}
}
);
textArea.getDocument().addUndoableEditListener(undomg);
menuCut.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){cut();}
}
);
menuCopy.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){copy();}
}
);
menuPaste.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){paste();}
}
);
menuDelete.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){delete();}
}
);
menuWrapline.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){wrapline();}
}
);
menuAbout.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
显示对话框
JOptionPane.showOptionDialog(null,
"程序名称:
\n记事本\n"+
"程序设计:
\n黄峰\n"+
"简介:
\n一个简单的文字编辑器\n"+
"可作为验收Java的实现对象\n"+
"",
"关于JNotePad",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null,null,null);
}
}
);
3.3.异常处理
在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。
本程序中选用的异常处理机制是try,catch。
捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。
privatevoidsaveFile(){
Filefile=newFile(getTitle());
if(!
file.exists()){
saveFileAs();
}
else{
try{
BufferedWriterbuf=
newBufferedWriter(
newFileWriter(file));
buf.write(textArea.getText());
buf.close();
stateBar.setText("未修改");
}
catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),
"写入文件失败",JOptionPane.ERROR_MESSAGE);
}
}
}
4.测试分析
点击“编辑”运行情况
“文件”菜单中的“打开”对话框
“帮助”的“关于”对话框
5.课程设计总结
经过差不多两个星期的努力,基本上完成我的Java课程设计—简单的文本编辑器程序,也基本上实现了我在需求分析时所预期的功能。
通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。
同时,做这门课程设计也进一步加强了我的动手能力。
为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。
在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。
但是,设计过程中也存在一些问题,本来一开始想给这个文本编辑器程序加上工具栏快捷按钮,以及添加其他具体功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。
6.参考文献
[1].张利国等编著,Java实用案例教程,清华大学出版社,2003.10
[2].何梅等编著,JavaApplet,清华大学出版社,2003.6
[3].张白一崔尚森编著,面向对象程序设计—Java,西安电子科技大学出版社,2006.1
7.附录
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.undo.*;
publicclassJNotePadUIextendsJFrame{
privateJMenuItemmenuOpen;
privateJMenuItemmenuSave;
privateJMenuItemmenuSaveAs;
privateJMenuItemmenuQuit;
privateJMenueditMenu;
privateJMenuItemmenuUndo;
privateJMenuItemmenuCut;
privateJMenuItemmenuCopy;
privateJMenuItemmenuPaste;
privateJMenuItemmenuDelete;
privateJMenuformmenu;
privateJMenuItemmenuWrapline;
privateJMenu=newJMenuItem("打开");
menuSave=newJMenuItem("保存");
menuSaveAs=newJMenuItem("另存为");
menuQuit=newJMenuItem("退出");
fileMenu.add(menuOpen);
fileMenu.addSeparator();分隔线
fileMenu.add(menuSave);
fileMenu.add(menuSaveAs);
fileMenu.addSeparator();分隔线
fileMenu.add(menuQuit);
设置「编辑」菜单
JMenueditMenu=newJMenu("编辑(E)");
menuUndo=newJMenuItem("撤销");
menuCut=newJMenuItem("剪切");
menuCopy=newJMenuItem("复制");
menuPaste=newJMenuItem("粘贴");
menuDelete=newJMenuItem("刷除");
editMenu.add(menuUndo);
editMenu.addSeparator();
editMenu.add(menuCut);
editMenu.add(menuCopy);
editMenu.add(menuPaste);
editMenu.add(menuDelete);
设置「格式」菜单
JMenuformMenu=newJMenu("格式(O)");
menuWrapline=newJMenuItem("自动换行");
formMenu.add(menuWrapline);
设置「帮助」菜单
JMenu.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){openFile();}
}
);
菜单-保存
menuSave.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){saveFile();}
}
);
菜单-另存为
menuSaveAs.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){saveFileAs();}
}
);
菜单-退出
menuQuit.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){closeFile();
}
}
);
菜单-撤销
menuUndo.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){undo();}
}
);
textArea.getDocument().addUndoableEditListener(undomg);
菜单-剪切
menuCut.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){cut();}
}
);
菜单-复制
menuCopy.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){copy();}
}
);
菜单-粘贴
menuPaste.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){paste();}
}
);
菜单-刷除
menuDelete.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){delete();}
}
);
菜单-自动换行
menuWrapline.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){wrapline();}
}
);
菜单-关于
menuAbout.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
显示对话框
JOptionPane.showOptionDialog(null,
"程序名称:
\n记事本\n"+
"程序设计:
\n黄峰\n"+
"简介:
\n一个简单的文字编辑器\n"+
"可作为验收Java的实现对象\n"+
"",
"关于JNotePad",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null,null,null);
}
}
);
编辑区键盘事件
textArea.addKeyListener(
newKeyAdapter(){
publicvoidkeyTyped(KeyEvente){processTextArea();}
}
);
}
privatevoidopenFile(){
if(isCurrentFileSaved()){文件是否为保存状态
open();打开
}
else{
显示对话框
intoption=JOptionPane.showConfirmDialog(
null,"文件已修改,是否保存?
",
"保存文件?
",JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,null);
switch(option){
确认文件保存
caseJOptionPane.YES_OPTION:
saveFile();保存文件
break;
放弃文件保存
caseJOptionPane.NO_OPTION:
open();
break;
}
}
}
privatebooleanisCurrentFileSaved(){
if(stateBar.getText().equals("未修改")){
returnfalse;
}
else{
returntrue;
}
}
privatevoidopen(){
fileChooser是JFileChooser的实例
显示文件选取的对话框
intoption=fileChooser.showDialog(null,null);
使用者按下确认键
if(option==JFileChooser.APPROVE_OPTION){
try{
开启选取的文件
BufferedReaderbuf=
newBufferedReader(
newFileReader(
fileChooser.getSelectedFile()));
设定文件标题
setTitle(fileChooser.getSelectedFile().toString());
清除前一次文件
textArea.setText("");
设定状态栏
stateBar.setText("未修改");
取得系统相依的换行字符
StringlineSeparator=System.getProperty("line.separator");
读取文件并附加至文字编辑区
Stringtext;
while((text=buf.readLine())!
=null){
textArea.append(text);
textArea.append(lineSeparator);
}
buf.close();
}
catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),
"开启文件失败",JOptionPane.ERROR_MESSAGE);
}
}
}
privatevoidsaveFile(){
从标题栏取得文件名称
Filefile=newFile(getTitle());
若指定的文件不存在
if(!
file.exists()){
执行另存为
saveFileAs();
}
else{
try{
开启指定的文件
BufferedWriterbuf=
newBufferedWriter(
newFileWriter(file));
将文字编辑区的文字写入文件
buf.write(textArea.getText());
buf.close();
设定状态栏为未修改
stateBar.setText("未修改");
}
catch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 Java 毕业 课程设计 文档