### 实现人民币金额大小写转换

在处理财务账款时，一般需要使用大写金额。如进行转账时，需要将转账金额写成大写的。也就是说，如果要转账 1200 元，则需要写成“壹仟贰佰元整”。对于这种情况，如果手动填写不仅麻烦，而且容易出错，所以常常需要通过程序控制自动进行转换。例如，中国工商银行的汇款页面的第三步填写款项信息时，就实现了人民币金额大小写转换功能，如图 1 所示。

图 1 中国工商银行的转账页面

下面我们也来制作一个程序，实现人民币金额大小写转换。它能够将输入的有效的小写金额转换为大写金额，当输入的小写金额格式不正确时，还能给出提示。程序的运行结果如下。

l 在小写金额文本框中输入小写金额 267005.36，单击“转换”按钮，将该小写金额转换为大写金额，并显示到下面的文本框中，如图 2 所示。

图 2 将输入的小写金额转换为大写金额的效果

l 如果输入的小写金额不正确，将给予提示，如图 3 所示 。

图 3 输入的小写金额不正确时显示的效果

#### 已有类

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

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

#### 关键技术

在实现人民币金额大小写转换时，主要应用文本框组件获取输入的小写金额，调用已有类 ConvertSum 中的 changemoney()方法将输入的小写金额转换为大写金额，并将转换的大写金额输出到另一个文本框中。

#### 实现步骤

下面我们来介绍实现人民币金额大小写转换程序的实现步骤。

（1）创建一个 Java 项目，名称为“实现人民币金额大小写转换”。

（2）创建一个 JFrame 窗体，名称为 MainFrame，并将其保存在 com.wgh 包中。

（3）在项目的根目录中创建一个名称为 lib 的文件，并将本实例所需的已有类 BackgroundPanel.jar 和 ConvertSum.jar 复制到 lib 文件夹中。

说明： BackgroundPanel 类用于设置窗体背景；ConvertSum 类用于将输入的小写金额转换为大写金额。

（4）依次将两个 Jar 包添加到构建路径中。添加后的包资源管理器结构如图 4 所示。

图 4 将所需的 Jar 包全部配置到构建路径中的效果

（5）在设计视图中，打开程序的主窗体 MainFrame，并设置窗体为空布局，以及窗体的名称，然后在左侧的工具面板中，选择按钮，在弹出的 Open type 对话框中，输入 com.lzw.BackgroundPanel 后，单击“确定”按钮，将显示如图 5 所示的效果。

图 5 等待选择组件放置的位置

说明：设置窗体为空布局的方法是，在窗体上单击鼠标右键，在弹出的快捷菜单中选择“Set layout”/“Absolute (null) Layout”菜单项。或者在属性面板中，找到layout属性，将属性值设置为Absolute (null) Layout。

（6）在合适位置单击鼠标，放置组件，并调整窗体和组件的大小。

（7）在 src 节点上添加一个名称为 images 的文件夹，并将背景图片复制到这个文件夹中。

（8）选中刚刚添加的 BackgroundPanel 组件，在左侧的属性面板中找到 image 属性，单击“…”按钮，将弹出选择图片对话框，这里选择 background.jpg，如图 6 所示，单击“确定”按钮。

图 6 选择图片对话框

（9）向该窗体中添加文本框、标签、分隔符和按钮控件，并设置主要属性，如表 1 所示。

表 1 程序主窗体中控件的属性设置

控件名称 | 控件属性 | 关联变量
| text：请输入小写金额： | label
|  | money
| text：转换后： | label_1
| focusable：false | result
| text：转换 | button
| width：388 height：20 orientation：horizontal | separator
| width：388 height：20 orientation：horizontal | separator_1
| width：14 height：95 orientation：vertical | separator_2
| width：14 height：95 orientation：vertical | separator_2_1

注意：在上表中，后面的4个JSeparator控件用于美化页面，没有实际意义。

（10）在“转换”按钮上，双击鼠标左键，进入到代码视图，这时，Eclipse 将自动为该按钮添加单击事件。Eclipse 自动生成的代码如下：

button.addActionListener(new ActionListener() { //为按钮添加事件监听

public void actionPerformed(final ActionEvent e) { //重写 actionPerformed()方法

}

});

此时，只需要在最里层的大括号中间编写用于实例化 ConvertSum 类，并调用相应的方法将输入的小写金额转换为大写金额，显示到转换后文本框中的代码，具体代码如下。

button.addActionListener(new ActionListener() { //Eclipse 自动生成的代码

public void actionPerformed(final ActionEvent e) { //Eclipse 自动生成的代码

ConvertSum convertSum=new ConvertSum(); //实例化 ConvertSum 类

result.setText(convertSum.changemoney(money.getText())); //将输入的小写金额转换为大写金额并显示到转换后文本框中

} //Eclipse 自动生成的代码

}); //Eclipse 自动生成的代码

（11）保存该文件，单击按钮，运行该程序，将显示如图 7 所示的运行结果。

图 7 默认的运行结果

输入正确的小写金额，单击“转换”按钮，将显示如图 2 所示的运行结果，输入错误格式的小写金额，单击“转换”，将显示如图 3 所示的运行结果。