虚拟的java编辑器课程设计报告.docx
- 文档编号:3045187
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:33
- 大小:143.83KB
虚拟的java编辑器课程设计报告.docx
《虚拟的java编辑器课程设计报告.docx》由会员分享,可在线阅读,更多相关《虚拟的java编辑器课程设计报告.docx(33页珍藏版)》请在冰豆网上搜索。
虚拟的java编辑器课程设计报告
虚拟的Java编辑器设计报告
一、需求分析
此次课程设计名称为JAVA编辑器。
需要设计一个图形界面的文本编辑器,能编辑Java语言源程序,界面和功能类似Editplus。
演示程序为计算机和用户的对话形式执行,即在计算机的终端显示图形界面的文档编辑器,然后用户就可以实现编辑,保存等像记事本一样的功能。
(1)打开以有文件,保存编辑文件,退出编辑器并提醒保存;
(2)查找编辑区中的字符串,用已知字符串替换查找的字符串;
(3)显示文件的存取路径;
(4)剪切,复制,粘贴,删除等;
(5)改变文本区字体的颜色,字体大小和形状的功能;
(6)关键字显示蓝色、类库类名显示红色。
二.设计
1.设计思想
Java编辑器是用来编写java程序的源代码。
Java程序编辑器是:
图形界面、线程、流与文件等技术的综合应用。
图形界面的实现:
就选择了swing来完成实现,在选择组件上,文本编辑区就选用了JTextPane作为主要的部件。
由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。
在设计类的时候,考虑到简单明了,一个主类,一个默认属性myfr类,染色类SyntaxHighlighter作为程序的整体框架,所有的对象和方法都是在默认属性类和染色类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类染色类中实现的。
本程序主类完成对象的实例化及显示。
2.功能设计
本程序涉及到了对图形用户界面的设计与实现和菜单的设计与实现。
用户可以通过此编辑器对java文件进行文字的复制、剪切、粘贴、删除、查找、替换、时间的插入、设置字体颜色和关键字、类库名着色等。
本程序主要有以下3个模块组成:
(1)主体模块
由窗口、功能菜单、文本框组成。
为用户选择编辑的功能提供了简单、方便的界面。
Java的窗口由JFrame类生成,我们可以在创建的空白窗口上添加组件。
菜单是图形用户界面的重要组成部分,是由菜单条(MenuBar)、菜单(Menu)、菜单项(MenuItem)和复选菜单项(CheckboxMenuItem)等对象组成。
(2)功能模块
有文件的新建、打开、保存、另存为和退出,文字的复制、剪切、粘贴、删除、查找、替换、以及时间的插入,为用户提供了java编辑器的基础功能。
(3)染色模块
关键字显示蓝色,类库名显示红色。
实现高亮子的核心方法
StyledDocument.setCharacterAttributes(intoffset,intlength,AttributeSets,booleanreplace)
3.详细设计
本设计主要是模仿windows记事本界面,主要的难点是关键字染色算法和查找替换算法。
其他的部分相对简单,主要就是一些容器组件的组合,布局的设置。
主要的功能都在myfr类中实现的。
Java中提供的多行文本编辑器有:
JTextComponent,JTextArea,JTextPane,JEditorPane等,都可以使用但是因为语法着色中文本要使用多种风格的样式,所以这些文本编辑器的document要使用StyledDocument.JTextArea使用的是PlainDocument,此document不能进行多种格式的着色.JTextPane,JEditorPane使用的是StyledDocument,默认就可以使用.
为了实现语法着色,可以继承自DefaultStyledDocument,设置其为这些文本编辑器的documet,或者也可以直接使用JTextPane,JEditorPane来做.为了方便,这里就直接使用JTextPane了
(1)主类classok
实例化初始化窗口
(2)主窗口体类classmyfr字体类classMyFont
(3)染色类classSyntaxHighlighter
(4)鼠标右键弹出菜单类classhandlemouse
(5)帮助主题类classmyhelp
(6)关闭窗口XXX类classxxx
(7)关闭帮助主题窗口类classxxxhelp
三.调试及测试
1.调试过程中遇到的主要问题及解决方法
开始把染色类写在myfr中,结果出现继承错误,只好把染色类写在myfr之外,通过引用实现类与类联系。
在开始设置字体颜色是出现问题,关键字可着色,不能设置字体颜色,最后发现时没有监听器的位置出现了问题!
2.对设计和编码的回顾讨论和分析
在本设计中没有用数据库,在直接用哈希表定义,所以只能简单定义几个常用的关键字、类库名,能说明功能实现就可以,这也是可以该进的地方。
设计的功能有限,只能实现简单的文本编辑,没有编译,运行等等功能,这也是能力有限。
3.测试数据集
(1)主体模块
定义一个myfr类对象,完成主类的实例化显示。
(2)功能模块
(A)文件(新建、打开、保存、另存为、退出)
功能图如下:
(B)编辑(复制、剪切、粘贴、删除、查找、查找下一个、替换、替换下一个、全选、日期/时间)
功能图如下:
(C)格式(字体、字体颜色)
功能图如下:
(D)格式风格(状态栏)
功能图如下:
(E)帮助(帮助主题、关于)
功能图如下:
(F)关键字显示蓝色、类库类名显示红色
功能图如下:
四、经验和体会。
通过此次成功的实现了Java文本编辑器的设计与编写,我进一步巩固、加深了对专业课程《JAVA语言教程》的基础理论知识的理解,使我熟练的掌握了JAVA语言的输入输出流、数据库连接的使用,灵活运用各种类库。
此次利用所学知识,开发小型应用系统我掌握了如何运用JAVA语言编写调试应用系统程序,并且训练了我独立开发应用系统,进行数据处理的综合能力。
同时,对于给定的设计题目,如何对其进行分析,理清思路,并给出相应的数学模型,也是一项很好的考验。
通过对这个课题的学习,我发现Java语言作为一种新兴的编辑语言,优势很明显,整个程序的结构很清晰,让人一目了然。
而且,程序的编辑、修改、移植性也很强,可以通过对功能模块的添加,增加程序的实用性,例如查找、替换、打印等等,这些事今后可以进一步研究发展的方向。
通过对这个课题的训练,使我基本掌握了Java编程的基础知识,主体模块与功能模块的结合技巧、方法,提高了我的自学能力,也锻炼了我分析问题、解决问题的能力!
此次课程设计给我印象最深的就是,在程序中非常容易出小的毛病,而这些小毛病往往浪费大量的时间而不得其解,让人烦恼至极。
比如,在主方法体中忘记定义一些变量,导致程序运行时程序也报出大量错,有时在鼠标随便定位处不小心按下一个字符,结果运行报错后出现意外错误,有时忘记保存等等……此后让我懂得写程序一定要仔细,要认真写清每一行代码。
附录:
主要源程序
importjava.awt.*;
importjava.awt.event.*;
importjava.awt.Color;
importjava.io.*;
importjava.util.*;
importjava.util.HashSet;
importjava.util.Set;
importjava.awt.datatransfer.*;
importjava.awt.event.*;
importjava.text.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.text.Caret;
importjavax.swing.JFrame;
importjavax.swing.JTextPane;
importjavax.swing.SwingUtilities;
importjavax.swing.event.DocumentEvent;
importjavax.swing.event.DocumentListener;
importjavax.swing.text.BadLocationException;
importjavax.swing.text.Document;
importjavax.swing.text.Style;
importjavax.swing.text.StyleConstants;
importjavax.swing.text.StyledDocument;
importjavax.swing.undo.*;
publicclassok{
publicstaticvoidmain(String[]args)
{
myfrfr=newmyfr("我的java编辑器");
fr.setSize(600,400);
}
}
///////////////////////////myfr主窗体类//////////////////////////////////////
classmyfrextendsJFrameimplementsActionListener
{
Stringstr,strnext,path,fname;//部分变量的声明
JPanelmainpane;
JFileChooserchoose=newJFileChooser();//文件对话框
Dialogfind,replace;//find为查找对话框,replace对话框
JTextFieldfindtxt,repltxt;//find为查找对话框的输入文本区,replace对话框的输入文本区
Fontnewfont;
JButtonfindenter,replb,but;//find为查找对话框,replace对话框的确定按钮
JLabelstate=newJLabel("java编辑器------未命名文档");//状态栏
JTextPanetxt1;//主输入文本区
Filenewfiles;
JPopupMenupopm;//弹出菜单声明
JMenum1,m2,m3,m4,m5,m6;//各菜单项
JMenuItemm61,m62,m26,m271,m34,m51,m52,m53,m54,p_copy,p_cut,p_paste,p_del,font;
intstartp,endp,nexttemp,newstartp,newendp;//查找替换时所用的临时变量
JToolBartoolbar=newJToolBar();//工具条
privateSet
privateSet
privateStylekeywordStyle;
privateStyleclasswordStyle;
privateStylenormalStyle;
myfr(Stringsss)/////构造函数开始
{
super(sss);
JMenuBarmb=newJMenuBar();
fname=null;//初始文件名为空
findenter=newJButton("确定");
findenter.addActionListener(this);//声明对话框中上确定按钮,并注册事件
replb=newJButton("确定");
replb.addActionListener(this)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟 java 编辑器 课程设计 报告