在占星学上,黄道十二星座是宇宙方位的代名词,十二星座代表了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所示的运行结果。