Java第三次作业《文本编辑器》讲解

Java第三次作业《文本编辑器》讲解
Java第三次作业《文本编辑器》讲解

《Java语言》课程期末作业

题目第6题:文本编辑器

学院计算机学院

专业网络工程

班别13级(3 )班

学号

姓名

2015年06月17日

一、课程题目

制作一个简单的文本编辑器,交互性要求:【最大选题人数:5】

(1) 可输入文字(仅要求英文及标点符号)

(2) 实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正……

(3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件

二、题目分析与设计

1. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。

开发环境:Eclipse

2. 论述题目的需求。给出软件功能架构图。

本题目要求实现类似于一个记事本的文本编辑器功能。要能够输入文字,能够实现一些常用的编辑功能,可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件。本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:

①菜单栏中有“文件”,“编辑”,“字体”三个主菜单。

②“文件”菜单有“新建”,“打开”,“保存”三个菜单项:分别用于新

建文件,打开文件,保存文件。

③“编辑”菜单中有“复制”“剪切”“粘贴”“查找”“替换”五个菜单项:用于实现复制所选文字,剪切所选文字,粘贴文字,查找,替换等功能。

④“字体”中有“格式”一个菜单项:用来控制文本框中文本的字体类型功能;

软件功能架构图:

3. 论述界面设计过程,指出其设计上的创意及组件的布局策略。

这个框架主要运用盒子布局对象和grid布局对象操作。对于文本编辑器的菜单组件如下。

“文件”菜单里:

“编辑”菜单里“字体”菜单里

4. 论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。不得以粘贴代码的方式代替设计部分。

首先,自定义一个editor类,该类继承了JFrame类和ActionListener、ItemListener 接口。在主类的主方法中,用editor创建一个对象bianji。

在editor的构造方法中设计好第一个界面的布局和组件。设计一个菜单条组件,

添加“文件”、“编辑”、“格式”三个菜单,“文件”菜单下又添加“新建”、“打开”、“保存”菜单项;在“编辑”菜单下又添加“复制”、“粘贴”、“剪切”、“查找”、“替换”菜单项;在“格式”下又添加“字体”菜单项。所有菜单项都添加ActionListener监视器,在editor中重写public void actionPerformed(ActionEvent e)方法。由于添加了ActionListener监视器的菜单项很多,当它们被点击时都会触发系统自动生成ActionEvent对象,event对象会自动调用editor里面的actionPerformed方法,对触发进行反应处理,为了能对不同的菜单项点击有不同的反应,那么要在actionPerformed方法中对事件源进行区分判断,从而不同的事件源有不同的反应,所以在actionPerformed中用e.getSource对事件源进行判断,用if else结构进行不同的事件源不同的处理方法。

自定义newfile()、openfile()、savefile()方法,对应“新建”、“打开”、“保存”三个事件源的处理。

在openfile()中,新建一个文件对话窗口showOpenDialog,建立一个文件字节输入流和缓冲输入流,缓冲输入流按行读取文件内容,然后添加到文本区中。

在savefile()中,新建一个文件对话框showSaveDialog,建立一个文件字节输出流和缓冲输出流,把文本区的字符串写到用户选择的文件中。

在newfile()方法中,先调用savefile()方法,把用户当前正在编辑的文本保存好先。用户保存后再让文本区组件调用setText()方法把文本内容设置为null。从而达到清理文本区的效果。

对应“复制”、“粘贴”、“剪切”菜单项,添加调用文本区的copy()、paste()、cut ()方法,把文本区的内容复制到系统粘贴板,把粘贴板的内容粘贴到文本区。事件源是“查找”菜单项时,新建一个窗口,新窗口添加“查找”按钮,和一个文本框,用来输入要查找的内容。按钮添加ActionListener监视器。

点击“查找”按钮后,用户在文本框输入文本,文本框调用getText()方法读取字符串作为模式对象,建立一个匹配对象,文本区调用getText()方法得到字符串,匹配对象调用find()方法在文本区字符串中查找模式对象中的字符串,找到后,匹配对象再调用start()、end()方法,得到文本区字符串中与模式对象匹配的子字符串序列的开始位置和终止位置。文本区再调用select()方法把文本区的子字符串显示出来。倘若没有找到要查找的内容,则会弹出一个警告窗

口。

点击“替换”菜单项后,新建一个新窗口,添加“替换”按钮和两个文本框,一个用来输入替换前的内容,一个用来输入替换后的内容。当用户在文本框中输入替换前的内容,该内容的字符串作为模式对象,建立一个匹配对象,匹配对象调用find ()方法,找到文本区中的子字符串,然后文本区再调用replaceRange()方法替换文本,replaceRange()中参数是用户输入的替换后的字符串、子字符串的开始位置、子字符串的终止位置。倘若在文本区中没有找到要替换前的文本内容,那么将弹出一个警告窗口。

“字体”菜单项是个下拉列表,添加ItemListener监视器,用GraphicsEnvironment 对象ge=GraphicsEnvironment.getLocalGraphicsEnvironment();得到电脑系统里的所有字体类型,ge对象调用方法getAvailableFontFamilyNames()得到字体类型的名字,并把名字存放到字符串数组中,然后下拉列表组件添加字符串数组中的字体类型名字。当用户在下拉列表中选择了一个字体时,触发ItemEvent事件对象,事件对象通知监视器,监视器实现接口回调,接口中自定义了方法,设置一个字体对象,该对象是用户选择的字体类型,然后文本区调用setFont方法把文本区的内容都设置成该字体类型。

三、测试分析

1.打开text.txt文件

2.点新建,再写入“你好,广东工业大学”,如图

3.复制粘贴测试

4.查找测试

5.替换

6.字体转换

附录:源代码

源代码7个包,2个类

相关文档
最新文档