隨筆 - 71  文章 - 15  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          因為口渴,上帝創(chuàng)造了水;
          因為黑暗,上帝創(chuàng)造了火;
          因為我需要朋友,所以上帝讓你來到我身邊
          Click for Shaanxi xi'an, Shaanxi Forecast
          ╱◥█◣
            |田|田|
          ╬╬╬╬╬╬╬╬╬╬╬
          If only I have such a house!
          〖總在爬山 所以艱辛〗
          Email:myesjoy@yahoo.com.cn
          NickName:yesjoy
          MSN:myesjoy@hotmail.com
          QQ:150230516

          〖總在尋夢 所以苦痛〗

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Hibernate在線

          Java友情

          Java認證

          linux經(jīng)典

          OA系統(tǒng)

          Spring在線

          Structs在線

          專家專欄

          企業(yè)信息化

          大型設備共享系統(tǒng)

          工作流

          工作流產(chǎn)品

          網(wǎng)上購書

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          2 AWT事件處理模型

            上一節(jié)中的主要內(nèi)容是如何放置各種組件,使圖形界面更加豐富多彩,但是還不能響應用戶的任何操作,要能夠讓圖形界面接收用戶的操作,就必須給各個組件加上事件處理機制。在事件處理的過程中,主要涉及三類對象:

            
          ◇ Event-事件,用戶對界面操作在java語言上的描述,以類的形式出現(xiàn),例如鍵盤操作對應的事件類是KeyEvent。
            ◇ Event Source-事件源,事件發(fā)生的場所,通常就是各個組件,例如按鈕Button。
            ◇ Event handler-事件處理者,接收事件對象并對其進行處理的對象

            例如,如果用戶用鼠標單擊了按鈕對象button,則該按鈕button就是事件源,而java運行時系統(tǒng)會生成ActionEvent類的對象actionE,該對象中描述了該單擊事件發(fā)生時的一些信息,然后,事件處理者對象將接收由java運行時系統(tǒng)傳遞過來的事件對象actionE并進行相應的處理。

            由于同一個事件源上可能發(fā)生多種事件,因此java采取了授權處理機制(Delegation Model),事件源可以把在其自身所有可能發(fā)生的事件分別授權給不同的事件處理者來處理。比如在Canvas對象上既可能發(fā)生鼠標事件,也可能發(fā)生鍵盤事件,該Canvas對象就可以授權給事件處理者一來處理鼠標事件,同時授權給事件處理者二來處理鍵盤事件。有時也將事件處理者稱為監(jiān)聽器,主要原因也在于監(jiān)聽器時刻監(jiān)聽著事件源上所有發(fā)生的事件類型,一旦該事件類型與自己所負責處理的事件類型一致,就馬上進行處理。授權模型把事件的處理委托給外部的處理實體進行處理,實現(xiàn)了將事件源和監(jiān)聽器分開的機制。事件處理者(監(jiān)聽器)通常是一個類,該類如果要能夠處理某種類型的事件,就必須實現(xiàn)與該事件類型相對的接口。例如例5.9中類ButtonHandler之所以能夠處理ActionEvent事件,原因在于它實現(xiàn)了與ActionEvent事件對應的接口ActionListener。每個事件類都有一個與之相對應的接口。

            將事件源對象和事件處理器(事件監(jiān)聽器)分開。如下圖所示

              
            打個不太恰當?shù)谋扔鳎热缯f有一位李先生,李先生可能會發(fā)生很多法律糾紛,可能是民事法律糾紛,也可能是刑事法律糾紛,那么李先生可以請律師,他可以授權王律師負責幫他打民事法律的官司,同時也可以授權張律師幫他打刑事法律的官司。這個請律師的過程從李先生的角度來看,就是授權的過程,而從王律師和張律師的角度來看,一旦被授權,他們就得時刻對李先生負責,"監(jiān)聽"著李先生,一旦發(fā)生民事糾紛了,王律師就要馬上去處理,而一旦發(fā)生刑事糾紛了,張律師就要馬上進行處理。此時此刻,李先生就是事件源,王律師是一個事件處理者,張律師是另外一個事件處理者,民事糾紛和刑事糾紛就是不同類型的事件。

          posted on 2006-01-22 12:56 ★yesjoy★ 閱讀(817) 評論(0)  編輯  收藏 所屬分類: java.awt包
          主站蜘蛛池模板: 上饶县| 鹤岗市| 镇沅| 涟水县| 彝良县| 喀喇沁旗| 伊吾县| 安泽县| 石台县| 湖南省| 昭平县| 襄垣县| 广饶县| 崇义县| 涿鹿县| 浑源县| 贵德县| 台江县| 浮梁县| 泽州县| 循化| 德格县| 湟中县| 镇平县| 阿勒泰市| 大荔县| 穆棱市| 仁寿县| 密云县| 河源市| 阿克陶县| 遂昌县| 射洪县| 阜新| 温州市| 琼海市| 古蔺县| 万盛区| 东兰县| 金沙县| 铜鼓县|