### 星座查询程序

在占星学上，黄道十二星座是宇宙方位的代名词，十二星座代表了 12 种基本性格原型，一个人出生时各星体落入黄道上的位置，正是说明着一个人的先天性格及天赋。因此，现在很多人都希望知道自己的星座。现在很多网站都提供了星座查询功能。例如，腾讯网中的星座查询栏目，如图 1 所示。

图 1 腾讯网中的星座查询栏目

再例如，搜狐网中也提供了星座查询栏目，如图 2 所示。

图 2 搜狐网中的星座查询栏目

选择出生的月份和日期后，单击“星座”按钮，将查询该生日对应的星座，如图 3 所示。

图 3 查询星座的结果页

下面我们也来设计一个星座查询程序。它能够根据输入的阳历生日，计算出对应的星座。程序运行结果如下。

l 输入真实的生日查询星座的效果

在月份文本框中输入出生的月份，在日文本框中输入出生的日期，单击“查询星座”按钮，将查询该生日对应的星座，如图 4 所示。

图 4 输入真实的生日查询星座的效果

l 输入的生日不正确时显示的效果

如果输入的生日不正确，将给予提示，如图 5 所示 。

图 5 输入的生日不正确时，显示的效果

#### 已有类

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

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

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

#### 关键技术

在实现星座查询时，最关键的技术就是熟练应用已有类。下面将对如何应用已有类进行介绍。

在开发程序时，应用已有类，可以大大提高项目的开发进度。因此对于 Java 程序来说，掌握在项目中应用已有类是必不可少的。下面就以本实例中的输入整型数据的文本框为例进行介绍。

（1）将要应用的已有类的.jar 文件复制到项目中，这里将其复制到项目下的 lib 文件夹中，如图 6 所示。

图 6 复制 Jar 文件到 lib 文件夹

（2）在 IntJTextField.jar 节点上单击鼠标右键，在弹出的快捷菜单中选择“构建路径”/“添加至构建路径”菜单项，将该 Jar 添加到构建路径中。这时在包资源管理器中将显示如图 7 所示的结构。

图 7 将 Jar 添加至构建路径

（3）通过设计视图打开需要应用该类的 JFrame 窗体，在左侧的工具面板中，选择按钮，在弹出的 Open type 对话框中，输入 com.wgh.，这时 Eclipse 将自动给出如图 8 所示的提示信息。

图 8 Open type 对话框

（4）双击上图中的 IntJTextField - com.wgh 节点，将显示如图 9 所示的效果。

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

（5）这时您可以移动鼠标，将该组件放置到合适的位置，如图 10 所示。

图 10 组件放置完成的效果

（6）这时，自定义的组件就添加完毕了。如果还需要调用组件的方法，可以转到代码视图，添加相应的方法。例如，调用 IntJTextField 中的 getInt()方法，可以应用以下的代码：

final IntJTextField intJTextField = new IntJTextField();

intJTextField.getInt();

#### 实现步骤

下面我们来介绍星座查询程序的实现步骤。

（1）创建一个 Java 项目，名称为“星座查询程序”。

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

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

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

图 11 3 个 Jar 包全部配置到构建路径中的效果

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

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

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

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

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

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

图 13 选择图片对话框

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

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

控件名称 | 控件属性 | 关联变量
| text：月 foreground：WHITE | label
| text：日 foreground：WHITE | label_1
| text：请输入您的阳历生日： foreground：WHITE | label_2
|  | monthTextField
|  | dayTextField
| text：查询星座 | button

说明： IntJTextField控件为编程词典提供的已有类，用于接收并返回整型的数字。

（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 自动生成的代码

int month=monthTextField.getInt(); //获取月份

int day=dayTextField.getInt(); //获取日

QueryConstellation queryConstellation=new QueryConstellation(); //实例化星座查询类

result.setText(queryConstellation.query(month,day)); //获取并显示星座

} //Eclipse 自动生成的代码

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

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

图 14 默认的运行结果

输入正确的生日，单击“查询星座”按钮，将显示如图 4 所示的运行结果，输入并不合法的生日，单击“查询星座”，将显示如图 5 所示的运行结果。