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

posted @ 2017-05-11 17:09  刘晓昭  阅读(296)  评论(0)    收藏  举报