第20章 写字板.ppt
文本预览下载声明
第20章 写字板 本章将围绕如何利用Java Swing实现一个写字板展开讨论,首先介绍画图板的需求,然后展示最终要实现的效果与功能;接着介绍程序的设计思路以及类结构图;最后详细的介绍各个主要模块的详细实现细节。 20.1 需求分析 在Windows系统中集成也提供了一个使用实用的写字板程序,其截图如图20-1所示。 20.2 成品预览 程序默认打开的页面如图20-2所示。 20.3 项目总体设计 本节将详细说明整个程序的设计思路,首先通过浏览这个程序的完整类图获得整个应用程序的框架结构;然后再展开介绍各个类的功能分配以及采用这种设计方式的原因。通过本节的介绍,读者将进一步了解写字板的原理,为后续章节详细介绍做准备。 20.3.1 类图概览 整个程序的主要由图20-7中六个类构成,类MockNotePad为窗口类,并且负责构建工具栏、内部窗格、菜单、以及事件定义等。类AlignListener则用于处理左、中、右对齐按钮的事件响应。类MyFrame是MockNotePad类的内部类,该类继承了JInternalFrame,用于创建包含富文本输入框的内部窗格。类MyUndoManager负责文本编辑的撤销和重做操作。 20.3.2 设计思路 程序的核心模块是MockNotePad类,该类既承载了程序窗口的功能,又作为各个按钮、工具栏的创建场所。窗口内的组件按照类型可以分成菜单、工具栏、内部窗格。 20.4 Constants类的实现细节 Constants类包含了所有菜单项的功能名称以及缩略图标的路径,这些信息均以私有成员变量的形式定义于Constants类内部。 20.5 主窗体的实现 写字板的主窗体是整个程序的操作界面,它要负责界面上的菜单、工具栏、内部窗体等组件的创建以及对应的时间处理机制实现,是本程序中代码量最大且最为复杂的一个类。笔者将根据组件类型分节介绍各个组件的创建。 20.5.1 主窗体成员变量 主窗口类为MockNotePad,该类将工具栏、菜单栏以及事件HashMap集作为其内部的私有成员变量,如下所示。 20.5.2 事件处理机制 在介绍其他组件的初始化之前,首先需要说明下所有Action的创建,下面是与文件菜单底下子菜单相关的Aciton的创建代码。 20.5.3 菜单的创建 程序的主菜单包括文件、编辑、对齐、插入四个,每一个主菜单下面又包括多个子菜单,每一个主菜单下面的子菜单由方法createMenu创建,方法createMenu的源码如下所示。 20.5.4 工具栏的创建 工具栏中每个按钮的创建由方法buildToolButton完成,下面是该方法的代码细节。 20.5.5 文件的保存与打开 格式化文本的保存在Java中一直没有处理好。目前仅能保存有格式文本,但是不能保存图片等其他资源。即使是有格式的文本,也存在部分“臭虫”,例如“对齐格式”不能被保存。 20.6 编辑重做撤销管理器实现 编辑管理器有类MyUndoManager负责,该类继承自javax.swing.undo.UndoManager类。此类也是一个监听器,通过JTextPane的getDocument方法获得一个javax.swing.text.Document类实例,然后利用该实例的addUndoableEditListener方法将重做管理器作为其编辑监听器。 20.7 对齐监听器 写字板的对齐监听器由一个单独的AlignListener类通过实现ItemListener接口实现的,然后程序的对齐菜单根据选择的结果判断应该执行哪一个对齐操作。 20.8 小结 写字板也是Window系统中自带的一个应用程序,写字板与记事本最大的区别在于写字板中的文档不仅仅可以输入文字,还可以设置字体的风格、大小等,这需要有富文本编辑器辅助实现。Java已经有一个现成的富文本编辑器JEditorPane,本章正是利用该编辑器实现写字板功能的。
显示全部