zoukankan      html  css  js  c++  java
  • 《Java技术》第七次作业

    Java第七次作业


    一 . 学习总结

    1.事件处理模型中的关键词及其具体代码实例

    • 事件处理机制
    • 采取"委派事件模型",委派事件模型是指,当事件发生时,产生事件源,把此信息传递给事件的监听者
    • 事件源
    • 是指一个产生或触发事件的对象
    • 事件
    • 是指承载事件源状态改变时的信息对象
    • 事件监听器接口
    • 事件监听器接口以Listener结尾,监听器定义了处理事件的方法
    • 事件处理步骤
    • 确定事件源,发生事件的组件按钮
    • 确定事件类型,ActionEvent等等
    • 事件源注册监听器
    • 确定事件监听器接口
    • 实现接口定义的方法
    • 使用内部类进行事件处理
    • 实例:
        import java.awt.*;
        import java.awt.event.*;
        import javax.swing.*;
        class windows{
            class date extends WindowAdapter {
    	        public void windowClosing(WindowEvent e) {
    		        System.out.println("退出系统!");
    		        System.exit(0);
    	        }
            }
        }
        public class Test3 {
        	public static void main(String[] args) {
            	JFrame frame = new JFrame("适配器测试");
            	frame.setVisible(true);
            	frame.setBounds(300, 150, 350, 350);
            	JPanel btnPanel = new JPanel();
            	frame.addWindowListener(new windows().new date());
            	frame.setVisible(true);
    	        frame.setResizable(false); // 窗体大小固定
    	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
        }
    
    • 使用匿名内部类进行事件处理
    • 实例:
        import java.awt.*;
        import java.awt.event.*;
        class Test3 extends JFrame {
            private JButton but = new JButton("关闭窗口");
        // 构造方法
    	    public Test3() {
    		    init(); // 初始化
    		    addComponent(); // 添加组件
    		    addListener(); // 添加监听器
    	    }
    	// 窗口初始化
    	    private void init() {
    		    this.setTitle("匿名内部类测试!");
    		    this.setBounds(300, 150, 350, 350);
    		    this.setVisible(true);
    		    this.setResizable(false); // 窗体大小固定
    		    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    }
    	// 添加组件
    	    private void addComponent() {
    		    JPanel btnPanel = new JPanel();
    		    btnPanel.setLayout(null); // 清除JPanel的布局
    		    this.add(btnPanel); // 定义按钮边界位置
    		    btnPanel.add(but);
    		    but.setBounds(120, 140, 100, 40);
    	    }
    
    	// 添加监听器
    	    private void addListener() {
    		    but.addActionListener(new ActionListener() {
    			    public void actionPerformed(ActionEvent e) {
    				    showAdminDialog();
    			    }
    		    });
    	    }
    	// 实现监听器定义的方法
    	    public void showAdminDialog() {
    		    this.setVisible(false);
    	    }
    	    public static void main(String[] args){
    		    Test3 t = new Test3();
    	    }
        }
    
    • 使用监听适配器进行事件处理
    • 实例:
        import java.awt.*;
        import java.awt.event.*;
        import javax.swing.*;
        class date extends WindowAdapter {
            public void windowClosing(WindowEvent e) {
    	        System.out.println("退出系统!");
    	        System.exit(0);
            }
        }
        public class Test3 {
        	public static void main(String[] args) {
            	JFrame frame = new JFrame("适配器测试");
            	frame.setVisible(true);
            	frame.setBounds(300, 150, 350, 350);
            	JPanel btnPanel = new JPanel();
            	frame.addWindowListener(new date());
            	frame.setVisible(true);
            	frame.setResizable(false); // 窗体大小固定
            	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
        }
    

    二 . 实验总结

    1. 宠物商店图形界面

    • 程序设计思路:

      • 首先,创建WelcomeFrame界面,进行注册或登录功能;点击注册,进入LoginFrame注册界面,进行注册;点击登录,若为管理员登录,进入AdFrame管理员界面,否则为UserFrame用户界面;若在用户界面点击宠物清单进入ListFrame清单界面
      • 其次创建Pet宠物类存放宠物属性,LoginCheck注册类存放注册属性创建data数据类,存放初始化的宠物信息,与用户购买的宠物集合,GUITools类对于界面组件显示的方法
      • 最后,AdminDao类是对管理界面的按钮组件功能进行实现,AdService类是对AdminDao类中的方法进行判断,UserDao类是对用户界面的按钮组件功能进行实现,UserService类是对UserDao类中的方法进行判断
    • 问题1:

      • 进入管理员,用户,清单界面时,列表不显示已经实例化的数据
    • 原因:

      • 在初始化方法中没有对数据进行显示
    • 解决方案:

      • 在初始化方法中没有对数据进行显示,调用查询方法,进行显示
    • 问题2:

      • 注册时,对用户名,手机号,邮箱用迭代器判断时,只能判断一个属性,并且判断完出错
    • 原因:

      • 每定义一个迭代器,只能判断一个属性,不能一个迭代器同时判断多个属性
    • 解决方案:

      • 注册的数据已经存储到集合中,用for循环对集合的元素与注册时的数据依次比较近判断
               if (e.getSource() == but) {
       			String name = tf1.getText();
       			String password1 = newString(tf2.getPassword());
       			String password2 = new String(tf3.getPassword());
       			String phone = tf4.getText();
       			String email = tf5.getText();
       			//Iterator<LoginCheck> iter = person.iterator();
       			int flag = 0;
       			for(int i =0; i<person.size();i++){
       				if(person.get(i).getName().equals(name)){
       					tableLabel6.setText("用户名已经存在!");
       					flag = 1;
       				}
       				if(person.get(i).getNumber().equals(phone)){
       					tableLabel6.setText("手机号已经存在!");
       					flag = 1;
       				}
       				if(person.get(i).getEmail().equals(email)){
       					tableLabel6.setText("邮箱已经存在!");
       					flag = 1;
       				}
       			}
       			if (!password2.equals(password1)) {
       				flag = 1;
       				tableLabel6.setText("密码与确认密码不一致!");
       			}
       			if (flag == 0) {
       				person.add(new LoginCheck(name, password1,
       						phone, email));
       				showAdminDialog();
       				tf1.setText("");
       				tf2.setText("");
       				tf3.setText("");
       				tf4.setText("");
       				tf5.setText("");
       			}
       		}
      
    • 类图:


    三 .代码托管


    四 .学习进度条

    进程 代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
    目标 5000行 300小时
    第2-4周 500/500 45/45 自学了前四章的内容,自己练习了学习过程中的所有代码,并写了一些练习题提交到了码云中
    第5周 200/700 15/55 学习了老师要求的内容
    第6周 300/1000 15/70 学习了作业中要求的内容
    第7-8周 200/1200 15/85 掌握了本次学习的全部内容
    第9周 300/1500 10/95 掌握了本次学习的内容
    第10周 400/1900 10/95 掌握了本次学习的内容
    第11周 600/2500 20/95 对图形界面有了一定的理解

  • 相关阅读:
    Win10版《芒果TV》全平台直播第89届奥斯卡颁奖典礼,特设第二演播室带来一手资讯
    Win10《芒果TV》商店版跻身Windows商店《热门免费应用》前12强
    Win10《芒果TV》商店版更新v3.2.6:修复后台任务故障,优化推送频次
    Win10《芒果TV》商店版更新v3.2.5:新增会员频道,修复多处细节问题,小年快乐
    Win10《芒果TV》商店版2016-2017春节大礼,每日前100名用户免费领取7天VIP
    Win10版《芒果TV》获评2016年度Windows Store最佳官方/休闲娱乐应用(LiveSino和微软信仰中心联合评选)
    [Cocos2d-x for WP8学习笔记] 一些基本概念,建立自己的启动界面
    [Cocos2d-x for WP8学习笔记] HelloWorld结构分析
    [Cocos2d-x for WP8学习笔记] HelloWorld
    WindowsPhone使用HtmlAgilityPack解析HTML
  • 原文地址:https://www.cnblogs.com/Melody-529/p/6830387.html
Copyright © 2011-2022 走看看