### 文本编辑器的批量替换

在文本编辑器中，批量替换功能用于对文档中指定文本数据进行批量替换，如 Windows 系统中记事本工具，可通过“编辑”菜单中的“替换”选项打开替换窗口，如图 1 所示。

图 1 记事本工具的批量替换

在一些高级一些文本编辑工具中，还支持正则表达式或通配符的查找，如 Office 工具中的 Word 替换功能，其替换功能十分强大，如图 2 所示。

图 2 Word 的查找与替换窗口

下面我们也来设计一个文本编辑器，实现对文字的批量替换功能，并支持正则表达式的使用，程序运行如图 3 所示。

l 打开替换窗口

输入文本内容后，通过“编辑”菜单下“查找/替换”选项打开替换窗口，如图 3 所示。

图 3 打开替换窗口

l 批量替换

打开替换窗口后，输入“查找内容”与“替换内容”单击“全部替换”按钮，即可完成替换操作，如图 4 所示。

图 4 批量替换

l 使用正则表达式

“查找内容”支持正则表达式的使用，如图 5 所示。

图 5 使用正则表达式

#### 已有类

位置：应用/源码管理/类库/StringEditor.jar

#### 关键技术

已有类 EditorMenu 封装了一个菜单栏对象，“编辑”下的“查找/替换”选项实现了文本的替换功能，其使用方法如下：

（1）将 StringEditor.jar 添加到构建路径，在左侧的工具面板中，选择按钮，在弹出的 Open type 对话框中，输入“editormenu”，这时 Eclipse 将自动给出如图 6 所示的提示信息。

图 6 Open type 对话框

（2）选择 EditorMenu 类，单击“确定”按钮将菜单栏的添加至窗体中，添加过程需要注意菜单栏必须添加到窗体的顶端位置，不能添加到其它位置，在添加后其代码如下：

final EditorMenu editorMenu = new EditorMenu();

setJMenuBar(editorMenu);

#### 实现步骤

下面我们来介绍文本编辑器的批量替换的实现步骤。

（1）创建一个 Java 项目，名称为“文本编辑器的批量替换”，并将 StringEditor.jar 添加到构建路径。

（2）创建一个名称为 MainFrame 的 JFrame 窗体，窗体标题为“文本编辑器的批量替换”，并将其保存在 com.lyq 包中。

（3）为使编辑窗口具有滚动条效果，向窗体中添加“JScrollPanel”面板。此操作通过左侧工具栏中按钮进行添加，其位置位于默认布局的中央位置，如图 7 中的黄色区域。

图 7 添加“JScrollPanel”面板

（4）添加“JScrollPanel”面板后，通过左侧工具栏中按钮，向面板中添加“JTextArea”组件，将其添加至面板的中央位置，如图 8 的黄色区域。

图 8 添加“JTextArea”组件

（5）通过选择按钮查找已有类 EditorMenu，并将其添加到窗体的菜单栏区域，如图 9 所示。

图 9 添加菜单栏

（6）在已有类 EditorMenu 中，存在一个 JtextArea 属性，在使用过程中需要传递一个 JtextArea 对象，EditorMenu 类将对 JtextArea 对象中的文本进行替换。在 MainFrame 的构造方法中，为 JtextArea 属性赋值，其关键代码如下：

public MainFrame() {

super();

// 标题

setTitle("文本编辑器的批量替换");

setBounds(100, 100, 500, 375);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// JScrollPane 对象

final JScrollPane scrollPane = new JScrollPane();

// 将 JScrollPane 对象添加到窗体中

getContentPane().add(scrollPane, BorderLayout.CENTER);

// 创建一个文本域

textArea = new JTextArea();

// 将文本域添加到窗体中

scrollPane.setViewportView(textArea);

// 实例化已有类 EditorMenu

final EditorMenu editorMenu = new EditorMenu();

// 对 JTextArea 属性赋值

editorMenu.setTextArea(textArea);

// 将已有类添加到窗体中

setJMenuBar(editorMenu);

}

程序运行效果如图 10 所示。

图 10 程序运行效果