Java第七次作业
Java第七次作业
(一)学习总结
1.写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。
事件源:是一个产生(或触发)事件的对象。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册。
事件:就是承载事件源状态改变时的信息对象。java.awt.event包和javax.swing.event包中定义了各种事件类,类名以Event结尾。
事件监听器接口:API对于每种事件都定义了对应的接口,接口中定义了处理该事件的方法,这些接口称为事件监听器接口。监听器接口以Listener结尾。如ActionListener接口处理ActionEvent事件。
private void addListener() {
//添加按钮监听
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addPet(); //调用添加方法
}
});
//修改按钮监听
updateBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
updatePet(); //调用修改方法
}
});
//删除按钮监听
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
delPet(); //调用删除方法
}
});
}
事件源产生一个事件,可以传送给事件监听者处理。事件监听者实际上就是一个类,该类实现了某个事件监听器接口,对接受到的事件进行处理。
事件处理的基本步骤:
- 首先产生监听器,监听是否有事件源的产生.
- 在要实现具有事件处理功能的组件上注册监听器.
- 注册监听器的组件产生事件源,并将事件对象返回给监听器.
- 有监听器调用相应的方法处理事件.
- 通过事件监听器监听事件源是否产生事件,如果产生,则将事件的对象传入到事件监听器中,执行监听器的相应方法来处理事件。为了让事件源知道要把事件传递给哪一个“事件监听者”,必需先把“事件监听者”在事件源注册。
(二)实验总结
实验内容:
基本要求:
使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
在管理界面实现以下功能:
- (1)显示所有宠物列表
- (2)添加宠物到列表
- (3)删除宠物
- (4)对宠物信息进行修改
- (5)退出
功能扩展:
用户分为管理员和普通用户两种,增加普通用户注册功能,增加普通用户界面。
实现以下功能:
- (1)显示所有宠物
- (2)能够按照品种对宠物进行查找
- (3)购买宠物
- (4)显示购买清单
- (5)退出
完成实验内容,代码上传到码云,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。

程序设计思路:
-
定义一个宠物信息PetItem类,定义宠物的基本属性,包括编号、姓名、种类、年龄、价格、数量。获取宠物的get、set方法。
-
建一个ArrayList类型的DateBase小型数据库,用来存储宠物信息和用户信息。
-
添加一个工具类GUITools类,来使用Java提供的GUI默认工具类
-
在视图目录下建用户注册类,用户登录类,程序欢迎界面以及宠物展现类
-
在管理员服务类中定义添加宠物方法,修改宠物方法,删除宠物方法
-
定义管理员数据访问类AdminDao.java调用DateBase中存储的宠物信息和用户信息。
问题一:
使用GUI实现界面编程在使用按钮的时候出现各种不合适,出现覆盖,看不到,甚至错误
原因:
没有理解void java.awt.Component.setBounds(int x, int y, int width, int height)具体使用方法
解决方法:
Parameters:
x the new x-coordinate of this component //横坐标
y the new y-coordinate of this component //纵坐标
width the new width of this component //宽
height the new height of this component //高
问题二:
在DataBase宠物信息存储过程中出错,以致影响其他类的宠物信息类型,来回改了好多次。
原因:忽略了常量变量的区别(基本数据类型必须是包装类)
解决方法:反复修改了多次,意识到了这个错误
(三)代码托管
链接:https://git.oschina.net/hebau_cs15/Java-CS01lxz
