JAVA程序员培训定制课程c11.ppt

上传人:本田雅阁 文档编号:2145519 上传时间:2019-02-21 格式:PPT 页数:20 大小:174.01KB
返回 下载 相关 举报
JAVA程序员培训定制课程c11.ppt_第1页
第1页 / 共20页
JAVA程序员培训定制课程c11.ppt_第2页
第2页 / 共20页
JAVA程序员培训定制课程c11.ppt_第3页
第3页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《JAVA程序员培训定制课程c11.ppt》由会员分享,可在线阅读,更多相关《JAVA程序员培训定制课程c11.ppt(20页珍藏版)》请在三一文库上搜索。

1、第十一章,GUI事件处理,2,本章内容,Java事件和事件处理 事件源、事件监听器、事件类型 事件监听器接口和事件适配器 内部类和匿名类在Java事件处理中的应用,3,什么是事件?,事件(Event) 一个对象,它描述了发生什么事情 事件源(Event source) 产生事件的组件 事件处理方法(Event handler) 能够接收、解析和处理事件类对象、实现和用户交互的方法,用户鼠标点击,actionPerformed(ActionEvent e) ,ActionEvent,4,事件处理模型(Delegation Model),一个事件可以被发送到多个不同的处理方法.,如果关注某个组件产

2、生的事件 ,则可以在该组件上注册适当的事件处理方法,实际上注册的事件处理者方法所属类型的一个对象-事件监听器,用户鼠标点击,actionPerformed(ActionEvent e) /事件处理方法2,ActionEvent,actionPerformed(ActionEvent e) /事件处理方法1,5,Java事件处理举例(1),import java.awt.*; import java.awt.event.*; public class TestActionEvent public static void main(String args) Frame f = new Frame(

3、“Test“); Button b = new Button(“Press Me!“); Monitor bh = new Monitor(); b.addActionListener(bh);/注册监听器 f.add(b,BorderLayout.CENTER); f.pack(); f.setVisible(true); class Monitor implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(“a button has been pressed“); ,6,事

4、件代理模型综述,Java GUI设计中,通过注册监听器的方式对所关注的事件源进行监控。 注册监听器时应指明该监听器监控(感兴趣)的事件种类。 当事件源发生了某种类型的事件时,只触发事先已就该种事件类型注册过的监听器。,7,Java事件分类,8,Java GUI事件及相应监听器接口(1),9,Java GUI事件及相应监听器接口(2),10,多重监听器,一般情况下,事件源可以产生多种不同类型的事件,因而可以注册(触发)多种不同类型的监听器。 一个事件源组件上可以注册多个监听器,针对同一个事件源的同一种事件也可以注册多个监听器,一个监听器可以被注册到多个不同的事件源上。,11,Java事件处理举例

5、(2),import java.awt.*; import java.awt.event.*; public class TestActionEvent2 public static void main(String args) Frame f = new Frame(“Test“); Button b1 = new Button(“Start“); Button b2 = new Button(“Stop“); Monitor bh2 = new Monitor2(); b1.addActionListener(bh); b2.addActionListener(bh); b2.setAct

6、ionCommand(“game over“); f.add(b1,“North“); f.add(b2,“Center“); f.pack(); f.setVisible(true); class Monitor2 implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(“a button has been pressed, the relative info is: “ + e.getActionCommand(); ,12,多重监听器举例(1),import java.

7、awt.*; import java.awt.event.*; public class TestMultiListener implements MouseMotionListener,MouseListener Frame f = new Frame(“多重监听器测试“); TextField tf = new TextField(30); public TestMultiListener() f.add(new Label(“请按下鼠标左键并拖动“), “North“); f.add(tf, “South“); f.setBackground(new Color(120,175,175)

8、; f.addMouseMotionListener(this); f.addMouseListener(this); f.setSize(300, 200); f.setVisible(true); public static void main(String args) TestMultiListener t = new TestMultiListener(); /未完,接下页,13,多重监听器举例(2),public void mouseDragged(MouseEvent e) String s = “鼠标拖动到位置(“ + e.getX() + “,“ + e.getY() + “)

9、“; tf.setText(s); public void mouseEntered(MouseEvent e) String s = “鼠标已进入窗体“; tf.setText(s); public void mouseExited(MouseEvent e) String s = “鼠标已移出窗体“; tf.setText(s); / 未使用的MouseMotionListener和MouseListener接口中的方法,也必须实现 public void mouseMoved(MouseEvent e) public void mousePressed(MouseEvent e) pub

10、lic void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) ,14,Ex1,练习M11-5/6页中的例子,并对实现了ActionListener接口的 Monitor类进行个性化修改,理解Java语言中的事件处理机制; 分析并运行M11-12/13页TestMultiListener.java例子,体会在同一个组件上注册多个事件监听器的机制; 扩充TestMultiListener.java,对MouseListener接口和MouseMotionListener接口中其余几个未真正实现的声明的方法进行

11、细化,使其实现一定的功能;,15,事件适配器(Event Adapter),为简化编程,针对大多数事件监听器接口定义了相应的实现类-事件适配器类,在适配器类中,实现了相应监听器接口中所有的方法,但不做任何事情。 在定义监听器类时就可以继承事件适配器类,并只重写所需要的方法。,ComponentAdapter(组件适配器) ContainerAdapter(容器适配器) FocusAdapter(焦点适配器) KeyAdapter(键盘适配器) MouseAdapter(鼠标适配器) MouseMotionAdapter(鼠标运动适配器) WindowAdapter(窗口适配器),16,事件适配

12、器类举例,java.awt.event.MouseAdapter Implemented Interfaces:EventListener, MouseListener mousePressed(MouseEvent e) mouseReleased(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mouseClicked(MouseEvent e) ,17,事件适配器用法举例,定义一个监听器类,用于处理鼠标点击事件: 1 import java.awt.*; 2 import java.awt.event.

13、*; 3 4 public class Monitor3 extends MouseAdapter 5 6 / 当只需要处理mouseClick事件时,可以继承 7 / 事件适配器类MouseAdapter,以避免实现接口 8 / 时不得不重写接口中定义的所有方法 9 10 public void mouseClicked(MouseEvent e) 11 / 处理代码 12 13 ,18,内部类在事件处理中的使用(1),import java.awt.event.*; public class TestInner Frame f = new Frame(“内部类测试“); TextField

14、 tf = new TextField(30); public TestInner() f.add(new Label(“请按下鼠标左键并拖动“), “North“); f.add(tf, “South“); f.setBackground(new Color(120,175,175); InnerMonitor im = new InnerMonitor(); f.addMouseMotionListener(im); f.addMouseListener(im); f.setSize(300, 200); f.setVisible(true); public static void mai

15、n(String args) TestMultiListener t = new TestMultiListener(); /未完,接下页,19,内部类在事件处理中的使用(2),class InnerMonitor implements MouseMotionListener,MouseListener public void mouseDragged(MouseEvent e) String s = “鼠标位置(“ + e.getX() + “,“ + e.getY() + “)“; tf.setText(s); public void mouseEntered(MouseEvent e)

16、String s = “鼠标已进入窗体“; tf.setText(s); public void mouseExited(MouseEvent e) String s = “鼠标已移出窗体“; tf.setText(s); public void mouseMoved(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) /end of inner class InnerMonitor /end of class TestInner,20,Ex2,在理解的基础上,将M11-18例子中的内部类InnerMoniter改为普通的外部类,实现同样的功能。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1