面向对象课程设计报告文本编辑器.docx
- 文档编号:15133182
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:30
- 大小:402.32KB
面向对象课程设计报告文本编辑器.docx
《面向对象课程设计报告文本编辑器.docx》由会员分享,可在线阅读,更多相关《面向对象课程设计报告文本编辑器.docx(30页珍藏版)》请在冰点文库上搜索。
面向对象课程设计报告文本编辑器
《面向对象程序设计》
课程设计报告
题目:
java文本编辑器
院(系):
专业班级:
学生姓名:
学号:
指导教师:
2014年12月29日至2015年1月9日
面向对象程序设计课程设计任务书
一、设计(调查报告/论文)题目
java文本编辑器
二、设计(调查报告/论文)主要内容
内容:
通过记事本编辑器可以实现新建、打开、保存文本文件、以及退出;同时也有对字体的改变、对字的颜色的改变以及复制、粘贴等功能,根据自己的意愿改变窗体,实行对其的最小化、最大化、关闭等等。
基本功能与要求:
1、创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;
2、新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);
3、设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;
4、添加右键快捷弹出式菜单,包括复制、字体等菜单项。
三、原始资料
1.《面向对象程序设计课程设计》指导书
2.耿祥义.JAVA大学实用教程.北京:
清华大学出版社,2009.
四、要求的设计(调查/论文)成果
1.课程设计报告
2.课程设计软件
五、进程安排
布置任务,查找资料、需求分析1天
总体设计1天
详细设计1.5天
编制源程序实现3.5天
测试与修改1天
撰写课设报告2天
六、主要参考资料
[1]张广彬.Java课程设计案例精编(第二版).北京:
清华大学出版社,2011.
[2]耿祥义.Java课程设计(第二版).北京:
清华大学出版社,2008.
[3]耿祥义.JAVA大学实用教程.北京:
清华大学出版社,2009.
[4]邹林达.陈国君Java2程序设计基础.北京:
清华大学出版社,2010.
[5]邹林达.Java2程序设计基础实验指导.北京:
清华大学,2010.
指导教师(签名):
20年月日
目录
1需求与总体设计4
1.1总体功能图4
1.2总体设计思路4
(1)文件菜单4
(2)编辑菜单4
(3)右键菜单4
1.3总体模块图5
1.4简要类图5
2详细设计6
2.1各类的功能及关键代码设计和类图表示6
(1)首先创建一个公共的类名为Bjq6
(2)创建一个空的菜单条并添加两个菜单项(文件、编辑)7
(3)先设计一个匿名内部类,为文件、编辑菜单添加其它下拉子菜单7
(4)右键快捷菜单的字体子菜单的创建8
(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:
复制、粘贴、字体大小、字体颜色。
9
(6)为窗体添加监听器9
(7)设计main方法:
为整个程序的开始提供了入口9
2.2程序流程图10
2.3详细类图12
3编码实现12
3.1程序实现代码12
4系统测试19
4.1错误处理19
4.2主要的测试截图19
1.程序运行界面19
2.编辑菜单及其复制粘贴功能20
3.右键菜单及其功能效果21
4.文件菜单及其功能界面23
总结26
1需求与总体设计
1.1总体功能图
图1.0
1.2总体设计思路
在本程序中,设计了一个菜单栏和文本内容区。
要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中Act Listener实现了Action Listener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
另外,还用来Window Listener来监听处理容器关闭触发的事件,
Window Listener继承了Windows Adapter类并覆盖了Windows Closing方法。
设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。
JMenu用来制作菜单,菜单包括“文件”“编辑”。
JTextPane主要用来输入文本。
为了加入颜色的设置,所以加了一个JColorChooser组件。
(1)文件菜单
①新建:
new_tool.addActionListener(this)
②打开:
open_tool.addActionListener(this)
③保存:
save_tool.addActionListener(this)
⑤退出
(2)编辑菜单
1 复制:
TextArea.copy();
2 粘贴:
TextArea.paste();
(3)右键菜单
1 字体大小:
产生字体对话框,并实现FontTest类的内容
2 字体颜色:
通过创建JColorChooser类的对象生成调色板选择字体颜色
1.3总体模块图
首先创建一个名为mynotepad的类并继承JFrame类作为最底层的容器,如图1所示:
图1.1
在图2中,构造一个Bjq类时要做三件事情,分别是初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器。
图1.2
1.4简要类图
图1.3
2详细设计
2.1各类的功能及关键代码设计和类图表示
首先引用两个包:
javax、java、以及对应的方法
(1)首先创建一个公共的类名为Bjq
为文本编辑器创建一个窗体并设计标题为:
计科1201彭志浩的文本编辑器Bjq;并创建编辑器的文本域,具体代码如下;
//设计标题
JFramef=newJFrame();
f.setTitle("计科1201彭志浩的文本编辑器Bjq");
//构造文本域
JTextAreaaa=newJTextArea("",20,50);//构造一个文本域
图2.1
(2)创建一个空的菜单条并添加两个菜单项(文件、编辑)
JMenuBarcc=newJMenuBar();//创建一个空的菜单条
//创建"文件"和"编辑"这两个菜单项
JMenufile=newJMenu("文件");
JMenuedit=newJMenu("编辑");
(3)先设计一个匿名内部类,为文件、编辑菜单添加其它下拉子菜单
“新建”子菜单:
创建OpenL类实现了ActionLister并实现其读取文件的功能以匿名内部类的形式创建菜单监听器这些代码的作用是实现对新建、保存、打开、退出、复制进行监听,
//实现文本文件的打开功能----即文件菜单下的子菜单"打开"
classopenLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showDialog(Bjq.this,"打开");
图2.2
“退出”子菜单:
//实现文本文件的退出功能----即文件菜单下的子菜单"退出"
classexitLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
}
图2.3
//新建、保存、复制、粘贴与之相类似就不做说明
(4)右键快捷菜单的字体子菜单的创建
字体包括字体的大小和字体的颜色等等
//设计字体大小
classfontsizeimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intn;
Stringno;
no=JOptionPane.showInputDialog("请输入你想要的字体大小:
");
n=Integer.parseInt(no);
Fontft;
ft=newFont("",Font.BOLD,n);
aa.setFont(ft);
}
}通过用户输入所需的字号的大小来调节字体大小以满足不同需要,
图2.4
//设计字体颜色
classfontcolorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Colora=newColor(0,192,191);
JColorChooserc=newJColorChooser();
a=c.showDialog(Bjq.this,"颜色选择框",a);
aa.setForeground(a);
}
}
图2.5
(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:
复制、粘贴、字体大小、字体颜色。
popup=newJPopupMenu();
JMenuItemcopy=newJMenuItem("复制");
JMenuItemword=newJMenuItem("字体");
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmousePressed(MouseEvente){}
publicvoidmouseReleased(MouseEvente){}
当单击右键时可以弹出复制、粘贴和字体菜单,实现功能,实现鼠标的控制来完成弹出菜单的操作。
(6)为窗体添加监听器
当用户按关闭按钮时就可以将窗口关闭,实现了对窗体的控制。
//关闭窗口
protectedstaticfinalclassappCloseLextendsWindowAdapter{
publicvoidwindowClosing(WindowEvente){
System.exit(0);}
f.setSize(800,500);
f.setVisible(true);
(这两个代码是设计窗体的的大小和窗口的可见性。
)
图2.6
(7)设计main方法:
为整个程序的开始提供了入口
publicstaticvoidmain(Stringargs[]){
JFramef=newJFrame();
Bjqapplet=newBjq();
f.setTitle("计科1201彭志浩的文本编辑器Bjq");
f.setBackground(Color.red);
f.getContentPane().add(applet,BorderLayout.CENTER);
f.addWindowListener(newappCloseL());
f.setSize(800,500);
f.setVisible(true);
f.pack();
}//为静态的主函数。
2.2程序流程图
流程说明:
程序开始先要初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器,然后根据用户操作选择调用相应的类转入相应的处理过程。
由于涉及到与用户的交互,程序的具体流程无法确定,只能给出主要的程序流程思想,画出简要的流程图。
简要流程图如下:
图2.7
2.3详细类图
图2.8
根据详细代码设计及功能要求,设计出详细类图如图5所示:
3编码实现
3.1程序实现代码
//Bjq.java
importjava.awt.*;
importjava.awt.datatransfer.*;
importjavax.swing.JColorChooser;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.text.*;
publicclassBjqextendsJPanel{
privateJPopupMenupopupMenu=newJPopupMenu();
JTextAreaaa=newJTextArea("",20,50);//构造一个文本域
JScrollPanebb=newJScrollPane(aa);
JMenuBarcc=newJMenuBar();//创建一个空的菜单条
JMenufile=newJMenu("文件");
//创建"文件"和"编辑"这两个菜单项
JMenuedit=newJMenu("编辑");
//菜单内容
JMenuItemdd;
//实例化剪切板
Clipboardclipbd=getToolkit().getSystemClipboard();
JMenufileMenu;
JPopupMenujPopupMenuOne;
JMenuItemopenFile,closeFile,exit;
JRadioButtonMenuItemcopyFile,pasteFile;
ButtonGroupbuttonGroupOne;
publicBjq(){
//新建一个内部类
classnewLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
aa.setDocument(newPlainDocument());
}
}
//实现文本文件的打开功能----即文件菜单下的子菜单"打开"
classopenLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showDialog(Bjq.this,"打开");
if(returnVal==JFileChooser.APPROVE_OPTION){
Stringfile=fc.getSelectedFile().getPath();
if(file==null){
return;
}
//读取文件
try{
Readerin=newFileReader(file);
char[]buff=newchar[4096];
intnch;
while((nch=in.read(buff,0,buff.length))!
=-1){
aa.setDocument(newPlainDocument());
aa.append(newString(buff,0,nch));
}
}catch(IOExceptionio){
System.err.println("IOException:
"+io.getMessage());
}
}else{
return;
}
}
}
//实现文本文件的保存功能----即文件菜单下的子菜单"保存"
classsaveLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showSaveDialog(Bjq.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
Stringsavefile=fc.getSelectedFile().getPath();
if(savefile==null){
return;
}else{
StringdocToSave=aa.getText();
if(docToSave!
=null){
FileOutputStreamfstrm=null;
BufferedOutputStreamostrm=null;
try{
fstrm=newFileOutputStream(savefile);
ostrm=newBufferedOutputStream(fstrm);
byte[]bytes=null;
try{
bytes=docToSave.getBytes();
}catch(Exceptione1){
e1.printStackTrace();
}
ostrm.write(bytes);
}catch(IOExceptionio){
System.err.println("IOException:
"
+io.getMessage());
}finally{
try{
ostrm.flush();
fstrm.close();
ostrm.close();
}catch(IOExceptionioe){
System.err.println("IOException:
"
+ioe.getMessage());
}
}
}
}
}else{
return;
}
}
}
//实现文本文件的退出功能----即文件菜单下的子菜单"退出"
classexitLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
}
//实现文本文件的粘贴功能----即编辑菜单下的子菜单"粘贴"
classcopyLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringselection=aa.getSelectedText();
StringSelectionclipString=newStringSelection(selection);
clipbd.setContents(clipString,clipString);
}
}
//粘贴
classpasteLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
TransferableclipData=clipbd.getContents(Bjq.this);
try{
StringclipString=(String)clipData
.getTransferData(DataFlavor.stringFlavor);
aa.replaceRange(clipString,aa.getSelectionStart(),aa
.getSelectionEnd());
}catch(Exceptionex){
}
}
}
//设计字体大小
classfontsizeimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intn;
Stringno;
no=JOptionPane.showInputDialog("请输入你想要的字体大小:
");
n=Integer.parseInt(no);
Fontft;
ft=newFont("",Font.BOLD,n);
aa.setFont(ft);
}
}
//设计字体颜色
classfontcolorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Colora=newColor(0,192,191);
JColorChooserc=newJColorChooser();
a=c.showDialog(Bjq.this,"颜色选择框",a);
aa.setForeground(a);
}
}
//注册一个事件监听器
classjtaLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
}
}
//definepopmenu定义弹出菜单
JMenuItemcut=newJMenuItem("粘贴");
JMenuItemFontSize=newJMenuItem("字体大小");
JMenuItemFontColor=newJMenuItem("字体颜色");
JMenuItemcopy=newJMenuItem("复制");
popupMenu.add(copy);
copy.addActionListener(newcopyL());
popupMenu.ad
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 课程设计 报告 文本 编辑器
![提示](https://static.bingdoc.com/images/bang_tan.gif)