虚拟的java编辑器课程设计报告.docx

上传人:b****5 文档编号:3045187 上传时间:2022-11-17 格式:DOCX 页数:33 大小:143.83KB
下载 相关 举报
虚拟的java编辑器课程设计报告.docx_第1页
第1页 / 共33页
虚拟的java编辑器课程设计报告.docx_第2页
第2页 / 共33页
虚拟的java编辑器课程设计报告.docx_第3页
第3页 / 共33页
虚拟的java编辑器课程设计报告.docx_第4页
第4页 / 共33页
虚拟的java编辑器课程设计报告.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

虚拟的java编辑器课程设计报告.docx

《虚拟的java编辑器课程设计报告.docx》由会员分享,可在线阅读,更多相关《虚拟的java编辑器课程设计报告.docx(33页珍藏版)》请在冰豆网上搜索。

虚拟的java编辑器课程设计报告.docx

虚拟的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();//工具条

privateSetkeywords;

privateSetclasswords;

privateStylekeywordStyle;

privateStyleclasswordStyle;

privateStylenormalStyle;

myfr(Stringsss)/////构造函数开始

{

super(sss);

JMenuBarmb=newJMenuBar();

fname=null;//初始文件名为空

findenter=newJButton("确定");

findenter.addActionListener(this);//声明对话框中上确定按钮,并注册事件

replb=newJButton("确定");

replb.addActionListener(this)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1