实验四Java事件处理汽院含答案

合集下载

§4.4事件处理

§4.4事件处理

4.4.2 事件类型
6.文本事件(TextEvent) 当文本框或单行文本框的内容发生改变时,发生文本事件。
也就是说当按下键(这个组件焦点)或调用组件的setText方 法时,组件的内容发生了改变,就会激发文本事件。 7.窗口事件(WindowEvent) 当窗口执行激活、撤销、打开、关闭等动作时,就会激发窗 口事件。这种事件是从WindowEvent类中创建的对象表示窗 口事件。要标识激发事件的容器窗口,如对话框、文件框 或框架,需要调用WindowEvent中的getWindow方法。
§4.4 事件处理
本节的主要内容如下: l Java事件处理机制 l Java事件监听器 l GUI组件事件处理
任务
通过前面几节的学习,我们已经使用Java中的组件完成了计算器的窗 体界面布局。但是目前还不能提供实际的功能,这是因为还没有对 组件所产生的事件进行处理,因此组件还不能提供其相应的功能。 为实现该计算器软件的功能,请您使用Java的事件处理技术来组件 中的事件。您的主要任务如下:
4.4.2 事件类型
4.击键事件(KeyEvent) 当用户按下或释放一个键时,发生击键事件,它分为三类:键按下、键释放和键
输入。当用户按下键时发生键按下事件,而释放键则发生键释放事件。键按下/ 释放由一个key code(键码,通常是一个32位整数)来表示。当按下键就会产 生一个Unicode字符(一种字符编码用16位表示),同时会产生一个键输入事件。 击键事件发生是有先后顺序的,通常是先是键按下事件,然后是键输入事件, 最 后 才 是 键 释 放 事 件 。 在 KeyEvent 类 中 提 供 了 许 多 常 量 ( 例 如 VK_A 和 VK_ENTER)来标识键码。要从事件对象中获取键码,可以通过调用KeyEvent 中的getKeyCode方法实现。而要获取所输 入的字符可以使用事件对象中的 getKeyChar方法。 5.鼠标事件(MouseEvent) 当用户按下鼠标、释放鼠标或移动鼠标指针时,发生鼠标事件。从MouseEvent类 中创建的对象代表鼠标事件。 MouseEvent中的getX和getY方法可以返回鼠标指针的坐标。这些坐标是相对于事 件源对象的坐标而言的如鼠标在窗口中单击,则返回的坐标是鼠标在窗体中的 坐标值。还可以调用getPoint方法,把它们作为一个点对象来获取。当操作弹出 式菜单时,需要调用MouseEvent的isPopupTrigger方法,这个方法获取弹出式触 发器的设置(当用户激发弹出菜单,将返回一个逻辑真)。

实验一Java编程环境使用(汽院含答案)

实验一Java编程环境使用(汽院含答案)

实验⼀Java编程环境使⽤(汽院含答案)实验⼀Java编程环境使⽤实验⽬的1.掌握Java运⾏环境的配置2.掌握Java程序的编写、编译、运⾏等过程3.熟悉Java语⾔的基本语法和运⾏原理4.掌握Java的基本数据类型、表达式和程序控制结构5.熟悉Eclipse开发环境的基本使⽤⽅法实验导读1.Java的标准输⼊和输出流/doc/53364ade28ea81c758f578bb.html ng.System类提供了三种有⽤的标准流:标准输⼊流(System.in)、标准输出流(System.out)和标准出错流(System.err)。

通过他们可以实现数据的输⼊输出操作。

1)标准输⼊流(System.in)通常⽤于读取⽤户从键盘输⼊或⽤户定义的输⼊设备的输⼊。

类java.util.Scanner 结合System.in实现对指定数据的输⼊。

2)标准输出流(System.out)⽤于程序的输出,通常⽤来在屏幕或⽤户指定的输出设备上显⽰信息。

有两种典型⽤法:System.out.print(data)实现在当前位置输出数据,System.out.println(data)实现换⾏输出数据到屏幕或⽤户定义的输出设备。

3)标准出错流(System.err)⽤于显⽰出错信息,采⽤System.err.print(data)或System.err.println(data)将指定的data输出到指定的输出设备,默认设备为屏幕。

2.javax.swing.JOptionPane对话框式的输⼊和输出,可以提供较好的界⾯处理。

能通过弹出⼀个标准对话框,来提⽰⽤户。

可以通过这个性质来实现具有对话框显⽰效果的数据输⼊和输出。

例如:String str=JOptionPane.showInputDialog("输⼊您的猜测:");3.java.util.Scannerjava.util.Scanner类可将⽂本转换成原语或字符串。

Java程序设计实验指导书(答案)

Java程序设计实验指导书(答案)

第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。

(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。

二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。

三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。

安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。

教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。

2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。

3.编写并编译、运行一个Java Application程序。

创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。

public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。

1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。

java事件处理

java事件处理

• 总结:
– 尽管awt的用户界面组件仍然可以用,但是建议最好不要使用。 – 现在编写Java图形界面程序,使用swing组件 + awt事件处理模型。
事件处理概述
• 图形用户界面编程中,必须使用事件处理。
– 支持GUI的操作环境会不断监视事件,并把事件报告给正在运行 的程序。这是多任务的需要。 – 每个程序决定如何相应这些事件。
由实现接口改为 继承自适配器类, 从而不用再写另 外六个无用方法。 也可写成 匿名内部类
WindowListener WindowAdapter
MyWindowAdapter
Java事件概述
• Java中所有事件都从java.util.EventObject类继承而来。 • 两个包中定义了事件:
– java.awt.event:awt的事件、监听器及适配器定义。 – java.swing.event:专门用于swing组件的附加事件。
事件监听器编写
见Example1.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Example1 extends JFrame { public Example1() { setSize(320,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane = getContentPane(); JButton testButton = new JButton("Test"); testButton.addActionListener(new MyListener1()); contentPane.setLayout(new BorderLayout()); contentPane.add(testButton,BorderLayout.SOUTH); } } class MyListener1 implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "ActionCommand:"+e.getActionCommand()); } }

实验4 Java流程控制实验-7页文档资料

实验4 Java流程控制实验-7页文档资料

实验4 Java流程控制与面向对象编程姓名:学号:专业:计算机科学与技术班级:同组人:无实验日期:【实验目的与要求】1.熟悉if结构的基本语法。

2.掌握面向对象程序设计方法。

3.掌握while和do…while结构的使用;4.掌握使用For实验循环结构的方法。

5.掌握累加、累乘的处理方法。

【实验内容】4.1 if语句的使用1. 以下程序展示的是Java中if语句的使用,阅读以下程序,理解其功能,并上机调试该程序,给出运行结果。

//保存文件名:Exam4_1.javapublic class Exam4_1public static void main(String args[])int a=5;if (a%2==1)System.out.println(a+" 为奇数"); // 输出a为奇数elseSystem.out.println(a+"为偶数"); // 输出a为偶数请给出程序运行结果:2. 仔细读下面的JAVA语言源程序,理解其功能,给出程序的运行结果。

//保存文件名:Exam4_2.javapublic class Exam4_2public static void main(String args[])int x,y,z=0;for (x=1;x<=10;x++)for (y=1;y<10;y++)if (x==5)continue;if (y>5)break;z++;System.out.println("z="+z);请给出程序运行结果:4.2 使用 switch 语句以下程序是使用switch语句实现在不同温度时显示不同的解释说明的功能,请阅读程序,理解其功能,并给出运行结果。

//保存文件名:Exam4_3.javaClass Exam4_3public static void main(String args[])int c=38;switch (c<10?1:c<25?2:c<35?3:4)case 1:System.out.println(" "+c+"℃有点冷。

Java事件处理

Java事件处理

实验9 Java事件处理实验目的:1. 掌握Java事件处理基本原理和步骤2. 掌握生成事件监听器的两种方法实验内容:一、编辑、编译和运行程序:1、实现事件监听接口的类的对象作为事件监听器(1) 动作事件监听处理import javax.swing.*;import java.awt.*;import java.awt.event.*;public class JB1_1 extends JFrame{JButton b=new JButton("按一下按钮可听到响声!");private class BHandler implements ActionListener{ // 事件监听器类public void actionPerformed(ActionEvent e){ // 事件处理方法Toolkit.getDefaultToolkit ().beep(); //发出一个音频嘟嘟声}}public JB1_1(String s) {super(s);setBounds(200,200,500,400);Container c= getContentPane();//获取顶层窗口内容面板(窗格)c.setBackground(Color.yellow);//设置窗格背景色为黄色(默认为浅灰色)c.add(b,BorderLayout.NORTH);b.addActionListener (new BHandler()); // 注册事件监听器setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {JB1_1 f1 = new JB1_1("一个简单GUI程序");}}(2) 鼠标事件监听处理import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DrawLine_1 extends JFrame implements MouseListener{ int x1, y1, x2, y2;public DrawLine_1() {super("鼠标画线的例子");setBounds(200,200,400,300);addMouseListener(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true); //设置窗口是为可见}public void mousePressed(MouseEvent e) { // 记录起点坐标x1=e.getX(); y1=e.getY();}public void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseReleased(MouseEvent e) { // 记录终点坐标x2=e.getX(); y2=e.getY();Graphics g= getGraphics();g.drawLine(x1, y1, x2, y2); // 画线}public static void main(String[] args){DrawLine_1 d = new DrawLine_1();}}2、适配器类子类的对象作为事件监听器import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DrawLine_2 extends JFrame {int x1, y1, x2, y2;private class eHandler1 extends MouseAdapter {public void mousePressed(MouseEvent e) {x1=e.getX(); y1=e.getY(); }}private class eHandler2 extends MouseMotionAdapter {public void mouseDragged(MouseEvent e) {x2=e.getX(); y2=e.getY();Graphics g= getGraphics();g.drawLine(x1, y1, x2, y2);x1=x2; y1=y2; }}public DrawLine_2() {super("鼠标随手画的例子");setBounds(200,200,400,300);addMouseListener(new eHandler1());addMouseMotionListener(new eHandler2());setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true); //设置窗口是为可见}public static void main(String[] args){DrawLine_2 d = new DrawLine_2();}}二、用面向对象方法编程。

JAVA 综合实验及练习(参考答案)

JAVA 综合实验及练习(参考答案)

print(){ };}
{ void print();} 11、关于以下程序段,正确的说法是( ) 1. String s1=“a”+“b”; 2. String s2=new String(s1) ; 3. if(s1==s2) 4. System.out.println(“= = is succeeded”); 5. if (s1.equals(s2)) 6. System.out.println(“.equals() is succeeded”); A.行 4 与行 6 都将执行 B.行 4 执行,行 6 不执行 C.行 6 执行,行 4 不执行 D.行 4、行 6 都不执行 12、下面哪个函数是 public void aMethod(){...}的重载函数?( ) A、void aMethod( ){...} B、public int aMethod(){...} C、public void aMethod ( ){...} D、public int aMethod ( int m){...} 13、下面关于继承的哪些叙述是正确的? ( ) A.在 java 中允许多继承。 B. 在 java 中一个类只能实现一个接口。 C. 在 java 中一个类不能同时继承一个类和实现一个接口。 D. java 的单一继承使代码更可靠。
3、利用求素数的方法,就 6~2000000 之间的所有偶数验证歌德巴赫猜想: 任何一个大于 6 的偶数可以分解为两个素数之和。
4、现有 15 位选手参加比赛,有 6 个评委每个评委都要给每位选手打分,分数为 60~100 分, 现需要定义二维数组存储选手成绩, 每行存储一位选手打分情况, 要求输出选手得分以及选 手最后得分,以及选手名次。 评分规则:分数为 60~100 分。选手最后得分为:去掉一个最高分和一个最低分后其余 4 个分数的平均值。 5、设计一个描述二维平面上点的类 Position,该类需要描述点的横坐标和纵坐标,并提供属 性的 set/get 访问器方法和计算两点间距离的方法。写一个程序测试这个类 6、设计一个表示二维平面上点的类 Point,包含有表示坐标位置的 protected 类型的成员变 量 x 和 y,获取和设置 x 和 y 值的 public 方法。 设计一个表示二维平面上圆的类 Circle ,它继承自类 Point ,还包含有表示圆半径的 protected 类型的成员变量 r、获取和设置 r 值的 public 方法、计算圆面积的 public 方法。 7、编写一个完整的 Java Application 程序。包含接口 Shape,MyRectangle 类,MyTriangle

实验四 异常处理

实验四  异常处理

实验四异常处理一、实验目的1.掌握Java异常处理的机制及Wraper类的用法、Object类的方法二、实验环境PC系列微机,Windows XP。

JDK150或更高版本。

三、实验步骤1、修改完善下列程序,使之能正常运行,并写出运行结果,学会自定义异常类的使用方法和程序执行过程。

public class CustomizedExceptionDemo {int divide(int d1, int d2) throws MyArithmeticException {“把这行去掉”int divide(int d1, int d2) {if (d2 == 0) {throw new MyArithmeticException("divide by zero");}return d1 / d2;}public static void main(String[] args) {CustomizedExceptionDemo demo = new CustomizedExceptionDemo();try {demo.divide(1, 0);} catch (MyArithmeticException e1) {System.out.println("MyArithmeticException is throwed: "+ e1.getMessage());} catch (Exception e2) {System.out.println("Exception is throwed : " + e2.getMessage());}“小写”Finally{System.out.println("the program run finally ");}}}class MyArithmeticException extends Exception {public MyArithmeticException() {}public MyArithmeticException(String message) {super(message);}}2、输入下列程序,并写出运行结果,仔细体会Object类的equals和toString 方法的用法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四Java事件处理汽院含答案实验四 Java事件处理实验目的1( 掌握Java语言中的事件处理方法2( 掌握Java语言中事件源、监视器和处理事件的接口的概念实验导读1( Java事件处理简介学习组件除了了解组件的属性和功能外,学习组件除了了解组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。

当用户在文本框中输入文本后按Enter键、单击按钮、在一个下拉列表框中选择一个条目等操作时,都发生界面事件。

在学习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。

事件源:能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。

也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。

监视器:需要一个对象对事件源进行监视,以便对发生的事件作出处理。

事件源通过调用相应的方法将某个对象作为自己的监视器。

例如,对于文本框,这个方法是: addActionListener(监视器);对于获取了监视器的文本框,当文本框获得输入焦点之后,如果用户按Enter 键,Java运行系统就自动用ActionEvent类创建一个对象,即发生了ActionEvent事件。

也就是说,事件源获得监视器后,相应的操作就会导致事件的发生,并通知监视器,监视器就会做出相应的处理。

处理事件的接口:监视器负责处理事件源发生的事件。

监视器是一个对象,为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中给出该接口中所有方法的方法体,那么当事件源发生事件时,监视器就自动调用类实现的某个接口中的方法。

2( 文本框上的ActionEvent事件java.awt.event包中提供了许多事件类和处理各种事件的接口。

对于文本框,这个接口的名字是ActionListener,这个接口中只有一个方法: public void actionPerformed(ActionEvent e)当在文本框中输入字符并按Enter键时,java.awt.event包中的ActionEvent 类自动创建一个事件对象,并将它传递给actionPerformed(ActionEvent e)方法中的参数e,监视器自动调用这个方法对发生的事件做出处理。

所以,称文本框这个事件源可以发生ActionEvent类型事件。

为了能监视到这种类型的事件,事件源必须使用addActionListener方法获得监视器;创建监视器的类必须实现接口ActionListener。

只要学会了处理文本框这个组件上的事件,其他事件源上的事件的处理也就很容易学会,所不同的是事件源能发生的事件类型不同,所使用的接口不同而已。

ActionEvent类有如下常用的方法:public Object getSource() ActionEvent对象调用该方法可以获取发生ActionEvent事件的事件源对象的引用,即getSource()方法将事件源上转型为Object对象,并返回这个上转型对象的引用。

public String getActionCommand() ActionEvent对象调用该方法可以获取发生ActionEvent事件时,和该事件相关的一个命令字符串,对于文本框,当发生ActionEvent事件时,文本框中的文本字符串就是和该事件相关的一个命令字符串。

3( 选择框和下拉列表上的ItemEvent事件选择框从未选中状态变成选中状态或从选中状态变成未选中状态时、下拉列表选项列表中选中某个选项时就发生ItemEvent事件,即ItemEvent类自动创建一个事件对象。

发生ItemEvent事件的事件源获得监视器的方法是addItemListener(监视器)。

处理ItemEvent事件的接口是ItemListener,创建监视器的类必须实现ItemListener接口,该接口中只有一个方法。

当选择框发生ItemEvent事件时,监视器将自动调用接口方法:itemStateChanged(ItemEvent e) 对发生的事件进行处理。

4( 鼠标事件任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都触发组件发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。

使用MouseListener接口可以处理5种操作触发的鼠标事件: (1)在事件源上按下鼠标键。

(2)在事件源上释放鼠标键。

(3)在事件源上击鼠标键。

(4)鼠标进入事件源。

(5)鼠标退出事件源。

鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。

MouseListener接口中的方法:(1)mousePressed(MouseEvent) 负责处理在组件上按下鼠标触发的鼠标事件,当在组件上按下鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。

(2)mouseReleased(MouseEvent) 负责处理在组件上释放鼠标触发的鼠标事件,当在组件上释放鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。

(3)mouseEntered(MouseEvent) 负责处理鼠进入组件触发的鼠标事件,当鼠标进入组件上方时,监视器将自动调用接口中的这个方法对事件作出处理。

(4)mouseExited(MouseEvent) 负责处理鼠标离开组件触发的鼠标事件,当鼠标离开组件时,监视器自动调用接口中的这个方法对事件作出处理。

(5)mouseClicked(MouseEvent) 负责处理在组件上单击或连击鼠标触发的鼠标事件,当单击或连击鼠标时,监视器自动调用接口中的这个方法对事件作出处理。

MouseMotionListener接口:使用MouseMotionListener接口可以处理以下两种操作触发的鼠标事件: (1)在事件源上拖动鼠标。

(2)在事件源上移动鼠标。

MouseMotionListener接口中有如下方法:(1)mouseDragged(MouseEvent) 负责处理在组件上拖动鼠标触发的鼠标事件,当在组件上拖动鼠标时,监视器调用接口中的这个方法对事件作出处理。

(2)mouseMoved(MouseEvent) 负责处理在组件上运动鼠标触发的鼠标事件,当在组件上运动鼠标时,监视器调用接口中的这个方法对事件作出处理5( 焦点事件组件可以触发焦点事件。

组件可以使用public void addFocusListener(FocusListener listener) 增加焦点事件监视器。

当组件获得焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。

创建监视器的类必须要实现FocusListener 接口,该接口有两个方法:public void focusGained(FocusEvent e) public voidfocusLost(FocusEvent e)当组件从无输入焦点变成有输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法:focusGained(FocusEvent e);当组件从有输入焦点变成无输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法:focusLost(FocusEvent e)。

用户通过单击组件可以使得该组件有输入焦点,同时也使得其他组件变成无输入焦点。

一个组件也可以调用public boolean requestFocusInWindow() 方法获得输入焦点。

6( 键盘事件当按下、释放或敲击键盘上一个键时就发生了键盘事件,在Java1.2事件模式中,必须要有发生事件的事件源。

当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件上发生了键盘事件。

事件源使用addKeyListener方法获得监视器。

使用KeyListener接口处理键盘事件 .接口KeyListener中有3个方法: public void keyPressed(KeyEvent e), public void keyTyped(KeyEvent e),public void KeyReleased(KeyEvent e)。

当按下键盘上某个键时,监视器就会发现,然后keyPressed方法会自动执行,并且KeyEvent类自动创建一个对象传递给keyPressed方法中的参数e。

keyTyped方法是keyPressed和KeyReleased方法的组合,当键被按下又释放时,keyTyped方法被调用。

用KeyEvent类的public int getKeyCode()方法,可以判断哪个键被按下、敲击或释放,getKeyCode方法返回一个键码值。

也可以用KeyEvent类的public char getKeyChar()判断哪个键被按下、敲击或释放,getKeyChar方法返回键上的字符。

键盘事件KeyEvent对象调用getModifiers()方法,可以返回整数值ALT_MASK、CTRL_MASK、SHIFT_MASK,它们分别是InputEvent类的类常量。

程序可以通过getModifiers()方法返回的值处理组合键事件。

例如,对于KeyEvent对象e,当按下CTRL+X组合键时,下面的逻辑表达式为true:e. getModifiers() == InputEvent.CTRL_MASK&&e.getKeyCode() == keyEvent.VK_XJava事件处理就是基于这种授权模式,即发生相应事件的事件源对象,比如sourceObject,通过调用相应的方法:sourceObject. addXXXListener(监视器); 将某个对象作为自己的监视器。

创建监视器对象的类必须声明实现相应的事件接口: class A implements XXXListener当事件源发生事件时,监视器将调用接口中相应的方法做出处理。

Java使用了接口回调技术设计了它的处理事件模式,注意到addXXXListener(XXXListener listener)方法中的参数是一个接口类型,listener可以引用任何实现了XXXListener接口的类所创建的对象,当事件源发生事件时,接口listener立刻回调类实现的接口中的某个方法。

事件的处理过程如下图所示:监视器回调接口方法事件源.addXXXListener(图事件处理示意图内部类实例做监视器:Java支持在一个类中声明另一个类,这样的类成为内部类,而包含内部类的类成为内部类的外嵌类,外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。

相关文档
最新文档