jsenter

          導(dǎo)航

          <2005年3月>
          272812345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          JAVA授權(quán)事件模型講解(原創(chuàng))

          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清單===================*/

          posted on 2005-03-31 22:44 李貝 閱讀(1385) 評論(4)  編輯  收藏 所屬分類: JAVA

          評論

          # re: JAVA授權(quán)事件模型講解(原創(chuàng)) 2005-03-31 23:26 dudu

          字體太大, 麻煩調(diào)整一下!  回復(fù)  更多評論   

          # re: JAVA授權(quán)事件模型講解(原創(chuàng)) 2005-04-01 11:50 李貝

          謝謝提醒啊,原來我怕別人看的累,所以搞大點(diǎn)的字,
          已經(jīng)改過來了!不行的話還請?jiān)偬嵝眩?nbsp; 回復(fù)  更多評論   

          # re: JAVA授權(quán)事件模型講解(原創(chuàng)) 2005-06-17 13:16 zorrowei

          兩者是一回事情嗎?小可不清楚的說~!  回復(fù)  更多評論   

          # re: JAVA授權(quán)事件模型講解(原創(chuàng)) 2005-06-17 13:17 zorrowei

          我說的是:
          授權(quán)事件模型與委托事情模型!  回復(fù)  更多評論   

          主站蜘蛛池模板: 杭锦旗| 台北市| 衡水市| 孟州市| 嘉鱼县| 兰西县| 湟中县| 贡嘎县| 永吉县| 郁南县| 额尔古纳市| 武川县| 舞阳县| 兴文县| 邻水| 丹棱县| 华亭县| 赞皇县| 连州市| 普安县| 甘孜县| 洛南县| 龙里县| 安阳县| 射阳县| 集贤县| 康平县| 达日县| 墨脱县| 古交市| 礼泉县| 濮阳市| 白沙| 光山县| 丹巴县| 城市| 汤原县| 道孚县| 河曲县| 成武县| 射洪县|