JAVA的授权事件模型包含三个概念:事件源,事件,事件监听器。
一,事件源:一个产生事件的对象。当这个对象的内部状态改变时,事件就会产生。一个事件源必须注册一个事件监听器已使监听器能够可以接受一个特定时间的通知。每一种事件都有它特定的注册方法,通用形式为:addTypeListener(TypeListener e)
二,事件:一个事件是描述了一个事件源的状态改变的对象。他可能通过一个人与图形用户接口的交互产生。如输入文字,点击鼠标。也可能不是由这些产生,如:一个事件可能在定时器中到期而产生。当然用户也可以自由的定义自己的事件。
注意:其中的Type可以是Key, Mouse,等。一个事件源可能允许注册多个事件监听器,也可能只允许注册一个监听器。
事件源也允许注销一个事件监听器,通用方法为:removeTypeListener(TypeListener e);
三,事件监听器:一个当事件发生时的时候被通知的对象。它有两个要求:
1,它必须在事件源中注册。
2,它必须实现接受和处理事件通知的方法。
还是来个比喻吧:你要想成为一个可以接受事件并处理事件的对象(即事件监听器),必须继承TypeListener类,其中的Type为事件类型。然后去注册你想监听的对象,并自己实现处理事件发生的方法,然后你就坐在等待事件的发生啦,哈哈!附源程序研究用:
/*===============DemoEvent.java清单=============*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class DemoEvent extends Applet implements MouseListener, MouseMotionListener{
public String msg = "";
public int mouseX = 0, mouseY = 0;
/*
*注册事件监听器
*/
public void init() {
addMouseListener(this);
addMouseMotionListener(this);
}
/*
*下面为所有处理MouseEvent的方法,当然你可以自定义自己的方法,但不能少了这些。
*/
public void mouseMoved(MouseEvent me) {
showStatus("mouse moved at :"+me.getX() +"," + me.getY());
}
public void mouseReleased(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "UP";
repaint();
}
public void mouseClicked(MouseEvent me) {
mouseX = 0;
mouseY = 10;
msg = "Mouse clicked!";
repaint();
}
public void mouseEntered(MouseEvent me) {
mouseX = 0;
mouseY = 10; ;
msg = "Mouse Entered!";
repaint();
}
public void mouseExited(MouseEvent me) {
mouseX = 0;
mouseY = 0;
msg = "Mouse Exited!";
repaint();
}
public void mouseDragged(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "*";
repaint();
}
public void mousePressed(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "Down";
repaint();
}
/*===================方法说明结束==================*/
public void paint(Graphics g) {
g.drawString(msg, mouseX, mouseY);
}
}
/*
*相关说明:这里的DemoEvent既是事件源也是事件监听器。
*
*/
/*===================DemoEvent.java清单===================*/