![Java程序設(shè)計(jì)基礎(chǔ) 課件 第12章 事件處理_第1頁(yè)](http://file4.renrendoc.com/view12/M07/20/2A/wKhkGWbyNBWAPcjDAAEKzXGrXfw873.jpg)
![Java程序設(shè)計(jì)基礎(chǔ) 課件 第12章 事件處理_第2頁(yè)](http://file4.renrendoc.com/view12/M07/20/2A/wKhkGWbyNBWAPcjDAAEKzXGrXfw8732.jpg)
![Java程序設(shè)計(jì)基礎(chǔ) 課件 第12章 事件處理_第3頁(yè)](http://file4.renrendoc.com/view12/M07/20/2A/wKhkGWbyNBWAPcjDAAEKzXGrXfw8733.jpg)
![Java程序設(shè)計(jì)基礎(chǔ) 課件 第12章 事件處理_第4頁(yè)](http://file4.renrendoc.com/view12/M07/20/2A/wKhkGWbyNBWAPcjDAAEKzXGrXfw8734.jpg)
![Java程序設(shè)計(jì)基礎(chǔ) 課件 第12章 事件處理_第5頁(yè)](http://file4.renrendoc.com/view12/M07/20/2A/wKhkGWbyNBWAPcjDAAEKzXGrXfw8735.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十二章事件處理12.1事件基本概念12.2委托事件模型12.3事件處理程序本章小結(jié)
12.1事件基本概念
12.1.1事件窗口的事件(event)指的是用戶使用鼠標(biāo)、鍵盤在窗口程序中對(duì)窗口組件進(jìn)行的各種操作,例如鼠標(biāo)點(diǎn)擊、進(jìn)入、移動(dòng)、拖動(dòng)以及鍵盤鍵入等。事件也可以由操作系統(tǒng)觸發(fā),例如時(shí)間計(jì)時(shí)器等,事件類的主要類層次如圖12-1所示。
圖12-1事件類層次結(jié)構(gòu)
java.util.EventObject是所有事件類的超類,具有方法getSource(),用于返回產(chǎn)生某事件的組件對(duì)象(事件源);java.awt.AWTEvent是所有AWT事件的根事件類,此類及其子類取代了原來(lái)的java.awt.Event類,具有方法getID(),返回某事件的ID號(hào)。
Java的部分事件類描述如表12-1所示。
12.1.2事件源
事件源(EventSource)即事件發(fā)生的地方,主要指的是事件發(fā)生在哪個(gè)窗口組件上。上述的事件類大多與相應(yīng)的事件源對(duì)應(yīng),如表12-2所示。
12.1.3監(jiān)聽(tīng)器接口與監(jiān)聽(tīng)器對(duì)象
窗口組件的事件如何進(jìn)行處理呢?Java將窗口組件的事件處理“委托”給監(jiān)聽(tīng)器對(duì)象來(lái)完成,監(jiān)聽(tīng)器對(duì)象是監(jiān)聽(tīng)器接口的實(shí)現(xiàn)類對(duì)象。
1.監(jiān)聽(tīng)器接口
Java的接口java.util.EventListener是所有監(jiān)聽(tīng)器接口的父接口,該父接口下約有70多個(gè)子接口,較為常用的接口如表12-3所示。
不同的監(jiān)聽(tīng)器接口監(jiān)聽(tīng)的事件源不同,監(jiān)聽(tīng)的具體事件也不同;在監(jiān)聽(tīng)器接口中聲明了被監(jiān)聽(tīng)組件發(fā)生相應(yīng)事件時(shí)應(yīng)該被調(diào)用的事件處理方法,方法的具體代碼由監(jiān)聽(tīng)器接口的實(shí)現(xiàn)類來(lái)完成。例如鍵盤監(jiān)聽(tīng)器接口KeyListener將監(jiān)聽(tīng)某個(gè)窗口組件的鍵盤事件,接口的定義如下:
鍵盤監(jiān)聽(tīng)器接口KeyListener聲明了三個(gè)方法監(jiān)聽(tīng)某個(gè)組件上對(duì)應(yīng)的事件,當(dāng)事件發(fā)生時(shí)將調(diào)用相應(yīng)的方法:
(1)鍵盤按鍵被按下,調(diào)用keyPressed方法。
(2)鍵盤按鍵抬起來(lái),調(diào)用keyReleased方法。
(3)鍵盤按鍵被敲擊一次,調(diào)用keyTyped方法。
2.監(jiān)聽(tīng)器對(duì)象
監(jiān)聽(tīng)器對(duì)象是監(jiān)聽(tīng)器接口實(shí)現(xiàn)類的實(shí)例對(duì)象,該對(duì)象具有監(jiān)聽(tīng)窗口組件指定事件的能力,當(dāng)該事件在窗口組件上發(fā)生時(shí),監(jiān)聽(tīng)器對(duì)象能夠獲取該事件對(duì)象并執(zhí)行預(yù)定義的方法,用以實(shí)現(xiàn)事件處理。
對(duì)于不同組件可能發(fā)生的對(duì)應(yīng)事件,需要選擇相應(yīng)的監(jiān)聽(tīng)器接口,自定義監(jiān)聽(tīng)器類實(shí)現(xiàn)該接口,將事件發(fā)生時(shí)要執(zhí)行的動(dòng)作代碼寫到接口聲明的方法中,然后創(chuàng)建監(jiān)聽(tīng)器對(duì)象與被監(jiān)聽(tīng)的組件進(jìn)行綁定,就可以“坐等”該組件上指定事件的發(fā)生。
12.1.4監(jiān)聽(tīng)器適配器
監(jiān)聽(tīng)器適配器(ListenerAdapter)是空實(shí)現(xiàn)了對(duì)應(yīng)監(jiān)聽(tīng)器接口的類,即監(jiān)聽(tīng)器適配器將監(jiān)聽(tīng)器接口的所有方法進(jìn)行了實(shí)現(xiàn),但是方法體為空,這樣可方便程序員繼承監(jiān)聽(tīng)器適配器而不用實(shí)現(xiàn)監(jiān)聽(tīng)器接口,如圖12-2所示。
圖12-2監(jiān)聽(tīng)器適配器
因?yàn)檫m配器已經(jīng)空實(shí)現(xiàn)了監(jiān)聽(tīng)器的所有抽象方法,對(duì)于自定義監(jiān)聽(tīng)器類而言,繼承了適配器也就相當(dāng)于空實(shí)現(xiàn)了監(jiān)聽(tīng)器接口。對(duì)于接口中的多個(gè)抽象方法,需要在哪個(gè)方法中寫事件處理代碼,只需要重寫那個(gè)方法即可,其它不需要的方法可以不用管。常用監(jiān)聽(tīng)器對(duì)應(yīng)的適配器如表12-4所示。
12.2委托事件模型
從前面對(duì)Java事件處理的基本概念的描述可知,窗口組件對(duì)事件的處理是“委托”給監(jiān)聽(tīng)器對(duì)象來(lái)完成的,而事件處理要求Java程序員需要做的有以下幾步:(1)編寫自定義監(jiān)聽(tīng)器類,可以實(shí)現(xiàn)對(duì)應(yīng)的監(jiān)聽(tīng)器接口,也可以繼承對(duì)應(yīng)的監(jiān)聽(tīng)器適配器,在該類中實(shí)現(xiàn)/重寫對(duì)應(yīng)事件的處理方法。
(2)使用自定義監(jiān)聽(tīng)器類創(chuàng)建監(jiān)聽(tīng)器對(duì)象,將該對(duì)象與要監(jiān)聽(tīng)的窗口組件進(jìn)行“關(guān)聯(lián)”。
(3)當(dāng)該窗口組件上被監(jiān)聽(tīng)的事件發(fā)生時(shí),就會(huì)被監(jiān)聽(tīng)器對(duì)象監(jiān)聽(tīng)到并獲得該事件對(duì)象,然后自動(dòng)執(zhí)行預(yù)定義的事件處理方法。
該模型如圖12-3所示。圖12-3委托事件模型
圖12-3中,要注意兩類線型:
(1)虛線說(shuō)明:
①需要在程序中預(yù)先定義好監(jiān)聽(tīng)器接口實(shí)現(xiàn)類。
②在監(jiān)聽(tīng)器類中要完成具體的事件處理方法,即預(yù)先定義的事件處理的動(dòng)作代碼。
③將監(jiān)聽(tīng)器實(shí)現(xiàn)類產(chǎn)生的監(jiān)聽(tīng)器對(duì)象與窗口組件進(jìn)行注冊(cè)/綁定。
(2)實(shí)線說(shuō)明:
①當(dāng)用戶有鼠標(biāo)或鍵盤的操作在被監(jiān)聽(tīng)的窗口組件上發(fā)生時(shí),系統(tǒng)將產(chǎn)生相應(yīng)的事件對(duì)象。
②事件源組件將事件對(duì)象傳遞給已注冊(cè)的監(jiān)聽(tīng)器對(duì)象,然后由監(jiān)聽(tīng)器對(duì)象接管事件處理,展現(xiàn)出預(yù)定義的事件處理動(dòng)作。
12.3事件處理程序
12.3.1標(biāo)準(zhǔn)事件處理JButton按鈕組件的標(biāo)準(zhǔn)動(dòng)作是點(diǎn)擊鼠標(biāo)左鍵,該動(dòng)作將產(chǎn)生ActionEvent事件對(duì)象,然后由ActionListener監(jiān)聽(tīng)器實(shí)現(xiàn)類的對(duì)象來(lái)監(jiān)聽(tīng)該事件并進(jìn)行處理,ActionListener接口只定義了一個(gè)方法:publicvoidactionPerformed(ActionEvent
e);
按照上述委托事件模型的描述,對(duì)按鈕的事件進(jìn)行處理,只需要完成下面兩步操作:
(1)編寫監(jiān)聽(tīng)器接口實(shí)現(xiàn)類實(shí)現(xiàn)ActionListener接口,在actionPerformed方法中寫入點(diǎn)擊按鈕的將要實(shí)現(xiàn)的動(dòng)作代碼。
(2)將該用戶自定義監(jiān)聽(tīng)器類的對(duì)象與按鈕組件進(jìn)行注冊(cè)(綁定)。
完成以上兩步操作后,當(dāng)用戶使用鼠標(biāo)點(diǎn)擊該按鈕時(shí),預(yù)定義的事件處理動(dòng)作代碼就會(huì)被自動(dòng)運(yùn)行。
程序結(jié)果:.
點(diǎn)擊第一個(gè)按鈕結(jié)果
點(diǎn)擊第二個(gè)按鈕結(jié)果:
12.3.2標(biāo)準(zhǔn)事件處理的另外兩種形式
上述標(biāo)準(zhǔn)事件處理的程序結(jié)構(gòu)形式是在BookView類中定義了一個(gè)用戶自定義監(jiān)聽(tīng)器的內(nèi)部類MyButtonListener,這是一種比較常用的程序結(jié)構(gòu),還可以使用下面兩種形式來(lái)完成事件處理。
1.?BookView1類自己實(shí)現(xiàn)ActionListener接口
程序結(jié)果:
程序結(jié)構(gòu)與上述程序運(yùn)行結(jié)果是一樣的,在此不再重復(fù)。
2.?BookView2類使用匿名監(jiān)聽(tīng)器類的方式
程序結(jié)果:
程序結(jié)構(gòu)與上述程序運(yùn)行結(jié)果是一樣的,在此不再重復(fù)。
12.3.3具體事件處理
上述程序是標(biāo)準(zhǔn)事件處理,主要是監(jiān)聽(tīng)處理一些組件的標(biāo)準(zhǔn)動(dòng)作。如果想針對(duì)更為具體的組件事件進(jìn)行處理,就需要實(shí)現(xiàn)具體的事件監(jiān)聽(tīng)器接口。
程序結(jié)果:
本章小結(jié)1.事件是可能發(fā)生在窗口組件上的各種動(dòng)作,包括鍵盤、鼠標(biāo)的動(dòng)作,窗口拉伸,焦點(diǎn)的獲得與失去等等,java.util.EventObject下面的各個(gè)事件子類與這些事件對(duì)應(yīng)。2.事件源是事件發(fā)生的地方,不同的窗口組件作為事件源對(duì)應(yīng)不同的事件。3.不同的事件監(jiān)聽(tīng)器接口對(duì)應(yīng)不同組件上可能發(fā)生的事件,聲明了相應(yīng)的監(jiān)聽(tīng)方法,就表示當(dāng)監(jiān)聽(tīng)到組件上發(fā)生的事件時(shí)要執(zhí)行相應(yīng)的方法,具體代碼由實(shí)現(xiàn)監(jiān)聽(tīng)器接口的實(shí)現(xiàn)類
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度演員廣告代言合同
- 2025年度醫(yī)療機(jī)構(gòu)藥品采購(gòu)委托代購(gòu)合同
- 農(nóng)業(yè)綠色發(fā)展行動(dòng)計(jì)劃
- 養(yǎng)老院合同協(xié)議書
- 用戶體驗(yàn)設(shè)計(jì)原則及實(shí)踐
- 簡(jiǎn)易買賣合同
- 云計(jì)算在企業(yè)資源規(guī)劃中的應(yīng)用
- 三農(nóng)產(chǎn)品追溯系統(tǒng)建設(shè)方案
- 模具設(shè)計(jì)與制造技術(shù)作業(yè)指導(dǎo)書
- 建房勞務(wù)人工的合同
- 高考英語(yǔ)經(jīng)常用的七百個(gè)詞匯
- 不定代詞用法總結(jié)及配套練習(xí)題
- PLC編程與應(yīng)用技術(shù)西門子S7-1200(高職)全套教學(xué)課件
- 部編版六年級(jí)下冊(cè)道法第一單元《完善自我、健康成長(zhǎng) 》
- JJG 976-2024透射式煙度計(jì)
- 半干法脫硫工藝
- 強(qiáng)基計(jì)劃自我陳述范文模板
- 林黛玉人物形象分析
- 網(wǎng)絡(luò)和信息安全教育課件
- 公司貨款管理制度
- 術(shù)后下肢深靜脈血栓的預(yù)防和護(hù)理
評(píng)論
0/150
提交評(píng)論