zoukankan      html  css  js  c++  java
  • Java第七次作业

    (一)学习总结

    1.写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。

    1.Java事件处理机制

    (1)java事件处理是采取“委派事件模型”。
    (2) 事件源是一个产生(或触发)事件的对象。
    (3)事件就是承载事件源状态改变时的信息对象。java.awt.event包和javax.swing.event包中定义了各种事件类,类名以Event结尾。
    (4)事件监听器接口,API对于每种事件都定义了对应的接口,接口中定义了处理该事件的方法,这些接口称为事件监听器接口。监听器接口以Listener结尾。
    

    2.事件处理步骤

    (1)确定事件源
    确定事件源,即发生事件的组件。Quit按钮
    (2)确定事件类型
    确定事件源后,根据要处理事件确定事件类型。比如点击按钮事件是ActionEvent,关闭窗口事件是WindowEvent。
    (3)确定事件监听器接口,实现接口
    确定事件类型后,需要进一步确定处理该事件的监听器接口,如ActionEvent事件对应的接口是ActionListener。确定接口后,需要自定义事件处理类实现该接口。
    public class QuitHandler implements ActionListener{
          public void actionPerformed(ActionEvent arg0) {
            }
    }
    (4)覆盖监听器接口中的适当方法
    自定义类实现监听器接口后,需要覆盖监听器中特定的方法。
    public void actionPerformed(ActionEvent arg0) {
            System.exit(0);
    }
    (5)事件源注册监听器
    //添加监听器
        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();   //调用删除方法
                }
            });
            
        }
        
    添加监听器:
    public AdminDialog(Frame owner,boolean modal){
            super(owner,modal);
            this.init();            //初始化
            this.addComponent();    //添加组件
            this.addListener();     //添加监听器
            queryPet();       //创建对象时显示数据
        }
    

    3.使用内部类进行事件处理

    内部类是外部类的一个成员,可以直接使用外部类的属性和方法。
    

    4.使用匿名内部类进行事件处理

    send.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e) {
              output.append(input.getText()+"
    ");
              input.setText("");
         }
    });
    

    5.使用监听适配器进行事件处理

    在事件处理中提供了很多的Adapter(适配器)类,它们是监听器接口的默认实现类。
    KeyListener接口有三个方法:
    void keyTyped(KeyEvent e)  键入某个键时调用
    void keyPressed(KeyEvent e)  键盘按下时调用
    void keyReleased(KeyEvent e)  键盘松开时调用
    

    (二)实验总结

    实验内容:
    基本要求:
    使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
    在管理界面实现以下功能:
    (1)显示所有宠物列表
    (2)添加宠物到列表
    (3)删除宠物
    (4)对宠物信息进行修改
    (5)退出
    功能扩展:
    用户分为管理员和普通用户两种,增加普通用户注册功能,增加普通用户界面。
    实现以下功能:
    (1)显示所有宠物
    (2)能够按照品种对宠物进行查找
    (3)购买宠物
    (4)显示购买清单
    (5)退出
    完成实验内容,代码上传到码云,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
    格式如下:

    程序设计思路:首先,创建进入界面,选择注册或登录;点击注册,进入注册界面,进行注册;进行新用户注册,调转到登录界面,或者点击登录直接进入登录界面,显示宠物管理页面,显示宠物清单
    创建一个主方法类,建vo包宠物类,用户类,数据包,图片,工具类,view包用户界面,管理员界面,注册界面,登录界面

    类图结构:

    问题1:注册的用户不能登录到页面
    原因:数据的存储和用户名和密码的判断问题

    问题2:注册时,迭代器不能正确判断最后一个的属性

    原因:迭代器最后一个只会没有下一个值不能进行判断
    解决方案:

    protected void Land() {
    		String name = addNameText.getText();
    		ArrayList<Per> data1 = DataBase.data1;
    		int a = 0;
    		for (int i = 0; i < data1.size(); i++) {
    			if (data1.get(i).getName().equals(name)) {
    				a = 1;
    			} else if (addPasswordText.getText().equals(
    					addPassword1Text.getText()) == false) {
    				a = 2;
    			}
    		}
    		if (a == 1) {
    			JOptionPane.showMessageDialog(this, "用户名重复,请重新注册!");
    		} else if (a == 2) {
    			JOptionPane.showMessageDialog(this, "两次密码输入不同,请重新输入!");
    		} else {
    			this.setVisible(false);
    			data1.add(new Per(name, addPasswordText.getText()));
    			JOptionPane.showMessageDialog(this, "注册成功!");
    			new Land().setVisible(true);
    		}
    	}
    

    (三)代码托管(务必链接到你的项目)

    https://git.oschina.net/hebau_cs15/FMM.git
    码云commit历史截图
    上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。

  • 相关阅读:
    Balance的数学思想构造辅助函数
    1663. Smallest String With A Given Numeric Value (M)
    1680. Concatenation of Consecutive Binary Numbers (M)
    1631. Path With Minimum Effort (M)
    1437. Check If All 1's Are at Least Length K Places Away (E)
    1329. Sort the Matrix Diagonally (M)
    1657. Determine if Two Strings Are Close (M)
    1673. Find the Most Competitive Subsequence (M)
    1641. Count Sorted Vowel Strings (M)
    1679. Max Number of K-Sum Pairs (M)
  • 原文地址:https://www.cnblogs.com/miao0512/p/6833003.html
Copyright © 2011-2022 走看看