㈠ java的事件处理机制是怎样
JAVA中当事件发生时,他不会进行广播,而是仅仅向关心此事件的对象发送消息。那么他怎么知道谁“关心”此事件呢。
这就要求关心此事件的对象,先行向事件的发出方进行注册,表示我关心此事件,当事件发生时请通知我。
【简单来说】:就是事件的“处理方”向事件的“发出方”先行注册,当事件发生时,事件的“发生方”负责通知事件的“处理方”。
譬如我编写一个窗口,用到了JFrame,我想实现一个功能,当按下Q键时,窗口关闭。
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class TestFrame extends JFrame {
private static final long serialVersionUID = 5671798241966272024L;
public static void main(String[] args) {
new TestFrame();
}
public TestFrame() {
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
addKeyListener(new MyKeyListener());// 这句话就是所谓的注册事件。
// MyKeyListener作为事件的处理方,向事件的触发方TestFrame进行注册。
// 这句话的意思是说,MyKeyListener对TestFrame说,我对于你的键盘事件感兴趣,如果有键盘事件请告诉我。
// 而TestFrame有一个列表保存着MyKeyListener对象的引用。当键盘按下时,他会列表中所有引用,调用KeyPressed方法。
// 当键盘松开时还会调用keyReleased方法,但是我们对于键盘松开不太关心,所以下面的类,我们可以只编写KeyPressed方法。
}
private final class MyKeyListener extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_Q) {
System.exit(0);
}
}
}
}
㈡ 简述java语言的事件处理机制,事件处理的3要素是什么.
(1)事件源 事件源是一个事件的产生者,如按钮、窗口及文本域等。
(2)事件类型 Java中所有的事件都封装成一个类,这些事件类被集中在java.awt.event包,所有的事件类均继承了AWTEvent类和一个方法——getSouce()方法,该方法返回发生事件的对象。
(3)事件监听器 不同的类型事件发生后,由事件监听器接收事件并调用相应的事件处理方法。所有的事件监听器实际上都是一个java.awt.event包中的接口,引入了java.util.EventListener接口。不同事件类型的监听器具有不同的方法。
㈢ java的事件处理是什么
打个比方:如果用户用鼠标单击了按钮对象button,则该按钮button就是事件源,而java运行时系统会生成ActionEvent类的对象actionE,该对象中描述了该单击事件发生时的一些信息,然后,事件处理者对象将接收由java运行时系统传递过来的事件对象actionE并进行相应的处理。
由于同一个事件源上可能发生多种事件,因此java采取了授权处理机制,事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理。比如在Canvas对象上既可能发生鼠标事件,也可能发生键盘事件,该Canvas对象就可以授权给事件处理者一来处理鼠标事件,同时授权给事件处理者二来处理键盘事件。有时也将事件处理者称为监听器,主要原因也在于监听器时刻监听着事件源上所有发生的事件类型,一旦该事件类型与自己所负责处理的事件类型一致,就马上进行处理。授权模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。事件处理者(监听器)通常是一个类,该类如果要能够处理某种类型的事件,就必须实现与该事件类型相对的接口。例如例5.9中类ButtonHandler之所以能够处理ActionEvent事件,原因在于它实现了与ActionEvent事件对应的接口ActionListener。每个事件类都有一个与之相对应的接口。将事件源对象和事件处理器(事件监听器)分开。
使用授权处理模型进行事件处理的一般方法归纳如下:
1.对于某种类型的事件XXXEvent, 要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener;
2.事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener ) 方法来注册监听器。
这是我的一点个人见解,希望对你有帮助,加油。
㈣ Java中异常处理机制,事件机制
异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个对象来表示,Java使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常的信息。
Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的根类为java.lang.Throwable,Throwable下面又派生了两个子类:Error和Exception,Error 表示应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线程死锁等系统问题。Exception表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉,例如,数组脚本越界(),空指针异常(NullPointerException)、类转换异常(ClassCastException);普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。
java为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try..catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理,所以,编译器不强制用try..catch处理或用throws声明,所以系统异常也称为unchecked异常。
提示答题者:就按照三个级别去思考:虚拟机必须宕机的错误,程序可以死掉也可以不死掉的错误,程序不应该死掉的错误;
㈤ java中事件机制是一种什么设计模式
是对发出事件的疑惑。每个平台的具体实现方法不同,不过你可以假象这样的状况:
在程序的底层有一个消息循环,专门检测各种状态,当一些状态改变时就“发出事件”。例如键盘输入会设置一个状态,程序在消息循环里看到了状态的改变,于是调用onKeyDown、onKeyUp等方法。这种与I/O相关的事件涉及到操作系统也不奇怪。
就是说在实现图形界面的库的底层会有类似这样的循环:
㈥ java达人,请简单说说java的事件机制
也打算看看高手怎么说,我先说说我的浅见吧。JAVA里的事件是用添加事件监听器实现的,而事件监听器都是一些接口,比如ActionListener接口,接口里都有对应的方法,只要实现对应的方法就可以了。最主要的是对组件添加监听器,JAVA有两种方式,第一个是创建一个类继承ActionListener接口,实现对应的方法,然后用"组件.add(new 实现类())"来添加,还有一种差不多,是"组件.add(new ActionListener(ActionEvent e){实现方法})",如果你可能多个组件用到同一个事件建议用第一个,否则两个都可以,建议用第一个,可以使程序很清晰。还有一些事件适配器,感觉和接口差不多比如WindowAdapter(),看过一些资料不是很明白,好像是提供了特别的接口方便用户调用吧。
㈦ 1.java的事件处理机制是怎样的
java事件处理机制你必须得明确以下几个概念:
核心:java采用的是事件源——事件监听器模型
1:事件(event):是指一个状态的改变,或者一个活动的发生。例如,简单常见的是单击一个按钮,或者输入一个按键都是一个事件。
2:事件源(event source):能够产生事件的对象称为事件源,如文本框,按钮,下拉列表等。
3:事件监听器(event listener):需要一个对象对事件源进行监听,以便对发生的事件做出处理,该对象就是事件监听器。事件源通过调用相应的方法将某个对象作为自己的监听器。无论应用程序还是小程序都采用这一机制。
例,对于按钮,注册监听器的方法是 addActionListener(监视器);:
4: 事件源获得监听器之后,相应的操作就会导致事件的发生,并通知监听器,监听器就会做出相应的处理。
5:处理事件的接口:监听器负责处理事件源发生的事件。为了处理事件源发生的事件,监听器会自动调用一个方法来处理事件,该方法定义在相应事件的接口中。
㈧ java事件机制
程序里写注册按钮绑定一下事件啊。
我网上找的,你参照一下吧
import java.awt.*;
import java.awt.event.*;
public class MouseEventDemo extends MouseAdapter {
Frame frame;
Panel panel;
Label text;
public static void main(String[] args) {
new MouseEventDemo();
}
public MouseEventDemo() {
frame = new Frame("AWTDemo");
frame.addWindowListener(new AdapterDemo());
frame.setSize(600, 400);
panel = new Panel();
panel.addMouseListener(this);
text = new Label("something happened..");
panel.add(text);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
public void mousePressed(MouseEvent e) {
text.setText("x: " + e.getX() + ", y: " + e.getY());
System.out.print("screen x: " + e.getXOnScreen());
System.out.print(", y: " + e.getYOnScreen() + "\n");
if (e.getButton() == MouseEvent.BUTTON1) {
System.out.println("left button");
}
if (e.getButton() == MouseEvent.BUTTON2) {
System.out.println("middle button");
}
if (e.getButton() == MouseEvent.BUTTON3) {
System.out.println("right button");
}
System.out.println("mouse position: " + e.getPoint());
System.out.println("mouse screen position: " + e.getLocationOnScreen());
System.out.println("mouse clicks: " + e.getClickCount());
}
}
class AdapterDemo extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}