JAVA的授權(quán)事件模型包含三個概念:事件源,事件,事件監(jiān)聽器。
一,事件源:一個產(chǎn)生事件的對象。當(dāng)這個對象的內(nèi)部狀態(tài)改變時,事件就會產(chǎn)生。一個事件源必須注冊一個事件監(jiān)聽器已使監(jiān)聽器能夠可以接受一個特定時間的通知。每一種事件都有它特定的注冊方法,通用形式為:addTypeListener(TypeListener e)
二,事件:一個事件是描述了一個事件源的狀態(tài)改變的對象。他可能通過一個人與圖形用戶接口的交互產(chǎn)生。如輸入文字,點(diǎn)擊鼠標(biāo)。也可能不是由這些產(chǎn)生,如:一個事件可能在定時器中到期而產(chǎn)生。當(dāng)然用戶也可以自由的定義自己的事件。
注意:其中的Type可以是Key, Mouse,等。一個事件源可能允許注冊多個事件監(jiān)聽器,也可能只允許注冊一個監(jiān)聽器。
事件源也允許注銷一個事件監(jiān)聽器,通用方法為:removeTypeListener(TypeListener e);
三,事件監(jiān)聽器:一個當(dāng)事件發(fā)生時的時候被通知的對象。它有兩個要求:
1,它必須在事件源中注冊。
2,它必須實(shí)現(xiàn)接受和處理事件通知的方法。
還是來個比喻吧:你要想成為一個可以接受事件并處理事件的對象(即事件監(jiān)聽器),必須繼承TypeListener類,其中的Type為事件類型。然后去注冊你想監(jiān)聽的對象,并自己實(shí)現(xiàn)處理事件發(fā)生的方法,然后你就坐在等待事件的發(fā)生啦,哈哈!附源程序研究用:
/*===============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;
/*
*注冊事件監(jiān)聽器
*/
public void init() {
addMouseListener(this);
addMouseMotionListener(this);
}
/*
*下面為所有處理MouseEvent的方法,當(dāng)然你可以自定義自己的方法,但不能少了這些。
*/
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();
}
/*===================方法說明結(jié)束==================*/
public void paint(Graphics g) {
g.drawString(msg, mouseX, mouseY);
}
}
/*
*相關(guān)說明:這里的DemoEvent既是事件源也是事件監(jiān)聽器。
*
*/
/*===================DemoEvent.java清單===================*/