湖南科技职业学院软件职业技术学院 教师课时授课计划 教师姓名: 授课班级: 授课课时:8 课程名称:JAVA程序设计 第 5 课 教学循环号:4-2 课题 处理事件  各教学环节课时分配 讲授  4.6 课时   有指导的实践  1.4 课时   独立实践  2 课时  教学内容 1、处理事件 2、检查数据的完整性  重点 理解事件,事件驱动 理解事件委派模型  难点 掌握接口的使用 掌握与事件有关的相应接口和类  教具 多媒体  作业 独立实践  授课日期 (校历) 第 3 周星期 2 第 7-8 节   第 3 周星期 3 第 1-2 节   第 3 周星期 4 第 1-4节   第 周星期 第 节  课后小结 通过本课的学习,学生掌握了: 理解事件,事件驱动 理解事件委派模型 掌握接口的使用 掌握与事件有关的相应接口和类  详细教学过程附后 详细教学过程: 教学目标陈述(5分钟) 处理事件 检查数据的完整性 二、JAVA中的事件处理机制(45*2分钟) 1、事件处理 事件处理: Java 中,事件表示应用与它用户之间的所有交互 事件处理 对于GUI编程是重要的 应用通过用户控制的GUI 执行一串操作 事件驱动编程: 当用户与程序交互时, (比如说,点击命令按钮), 系统创建表示动作的事件并把它委派给程序内的 事件处理代码 2、生命周期 基于窗口的、事件驱动程序的生命周期 3、事件的组件 事件包含三个组件: 事件对象:事件对象事件的分类、组件及时间 事件源:事件源 是产生事件的对象 事件处理程序:事件处理程序是理解事件和处理它的一种方法 4、接口 接口的需要: 用接口定义一种可被类层次结构中任何类实现的行为协议(标准的 行为) 当类之间有某种关系时只能使用抽象类。接口可用彼此不相关的类实现 实现接口的步骤: 移入接口 声明类,使用 implements 关键字,后接接口名 确保类实现了在接口中声明的每个方法 保存带.java 扩展的文件 编译已创建的 applet或应用 5、委派事件模型 这个模型中,事件被发送到引起它的组件 组件注册带有程序的监听程序对象。监听程序对象包含接收和处理事件的相应的事件处理程序 每个事件有一个相应的监听程序接口,它指出处理此事件所需的方法 下图说明委派事件模型   下表提供你关于事件源、所创建的事件对象、相应的事件处理程序、及把包含处理程序的接口的列表 : 事件源 事件对象 接口名 事件处理程序  Window WindowEvent Window Listener void windowOpened (WindowEvent e) void windowClosing (WindowEvent e) void windowActivated (WindowEvent e) void windowDeactivated (WindowEvent e)  Component Focus Event Focus Listener void focusGained (FocusEvent e) void focusLost (FocusEvent e)  Component Component Event Component Listener void componentMoved (ComponentEvent e) void componentResized (ComponentEvent e)  Component Action Event Action Listener void actionPerformed (ActionEvent e)   三、实例分析 5.D.1 (45*2分钟) 1、问题陈述 获取客户材料的applet 的屏幕设计几乎是完美的。但此applet 没有包含接收来自控件的数据和检查它的完整性所需的功能。以下需要对所接收的数据进行检查: 文本框不应留下空白. 至少应从组合框控件中选择一个项目 2、确定任务 识别按钮的变量名,文本,及位置 识别加入功能到按钮的机制 识别要确认的数据,要做的确认,及要显示的错误的消息 修改代码 保存和编译程序 执行程序 检查输出 3、分析解决问题 识别按钮的变量名,文本,及位置 结果: Variable name = buttonAccept Caption for the button = “Accept” gridx = 8 gridy = 11 识别机制 事件处理:例子 import java.awt.event.*; class MyFrame extends JFrame { JButton b1; public static void main(String args[]) { MyFrame f = new MyFrame(); } public MyFrame() { /* super() method is used to invoke the base class constructor */ super(“Window Title”); b1=new JButton("Click Here"); add("Center",b1); //Register the listener for the button ButtonListener blisten= new ButtonListener(); b1.addActionListener(blisten); setSize(200,200); setVisible(true); } //The Listener class class ButtonListener implements ActionListener { public void actionPerformed (ActionEvent evt) { JButton source = (JButton)evt.getSource(); source.setText(“Button clicked”); } } } 应用是如何工作的: 执行开始于 main()方法 在 main() 方法中创建MyFrame 类的对象 调用MyFrame类的构造符 super() 方调用基类(JFrame) 的构造符,并设置该窗口的标题 在窗口的中心处,创建和放置按钮对象 创建监听程序对象 addActionListener()方法注册关于按钮的监听程序对象 setVisible() 方法显示此窗口: 应用等待用户与它交互 当用户点击按钮时: 产生 ActionEvent 事件 创建ActionEvent 对象并委派给处理已注册的监听程序对象 监听程序对象包含 actionPerformed()方法,它处理 ActionEvent 事件 在 actionPerformed()方法中,用getSource()方法检索对事件源的引用 用 setText()方法改变此按钮的标题 Timer 类的事件处理例子 前面的例子中,事件是由用户交互的发动的 下一个例子使用Timer 类对象来发动事件 Timer 类有构造符Timer (int, ActionListener) 第一个变元是应发生动作之前的毫秒延迟数 第二个变元是将处理此事件的监听程序类的对象 事件处理例子… 可用Timer 类的方法start() 启动timer 可用Timer 类的方法stop()仃止启动timer 可用 Timer 类进行动画 结果: 实现关于按钮的ActionListener 接口,以提供检索来自控件的数据和检查它们的完整性的功能 识别要确认的数据,要做的确认,及要显示的错误的消息 结果: Control: textCustCellNo, Attribute: customerCellNo Validation: customerCellNo.length !=0, Error Message : “Customer Cell No. cannot be empty.” Control: textCustName , Attribute: customerName Validation: customerName.length !=0, Error Message : “Customer Name cannot be empty.” Control: textCustAge , Attribute: customerAge Validation: 0<=customerAge<=100, Error Message : “Invalid value for age.” 修改代码 4、执行验证 保存和编译程序 执行程序 检查输出 在该控件中进入不正确的数据,并检查代码的功能 四、指导性练习(45*2分钟) 5.P.1 1、问题陈述 为接收商人材料而开发的 applet 应有一个按钮以重设已进入的值。此 applet 也应包含检索来自文本控件的数据和检查它的完整性所需的功能。以下是对接受数据所需的检查: 文本控件不应该留下空白. 进入的移动装置的数应具有十位数字. 2、问题分析 3、验证 五、小结 (10分钟) 六.独立实践(45*2分钟) 布置学生进行独立实践5.MR.1、5.MR.2、5.MR.3 根据完成情况进行少量讲解