對于圖形用戶界面的程序來說,事件處理是十分重要的。要想實現(xiàn)用戶界面,必須掌握Java事件處理的基本方法。
任何支持GUI的操作環(huán)境都要不斷地監(jiān)視敲擊鍵盤或點擊鼠標(biāo)這樣的事件。操作環(huán)境將這些事件報告給正在運行的應(yīng)用程序。如果有事件產(chǎn)生,每個應(yīng)用程序?qū)?決定如何對它們作出響應(yīng)。在VisualBasic這樣的語言中,事件與代碼之間有著明確的對應(yīng)關(guān)系。程序員對相關(guān)的特定事件編寫代碼,并將這些代碼放置 在過程中,通常人們將它們稱為事件過程(event procedure)。例如,有一個名為HelpButton的VisualBasic按鈕有一個與之關(guān)聯(lián)的HelpButton_Click時間過程。 這個過程中的代碼將在點擊按鈕后執(zhí)行。每個VisualBasic的GUI組件都響應(yīng)一個固定的事件集,不可能改變VisualBasic組件響應(yīng)的事件 集。
另一方面,如果使用像原始的C這樣的語言進行事件驅(qū)動的程序設(shè)計,那就需要編寫代碼來 不斷地檢查事件隊列,以便查詢操作環(huán)境報告的內(nèi)容(通常這些代碼被放置在包含很多switch語句的循環(huán)體申)。顯然,這種方式編寫的程序可讀性很差,而 且在有些情況下,編碼的難度也非常大。它的好處在于響應(yīng)的事件不受限制,而不像VisualBasic這樣的語言,將事件隊列對程序員隱藏起來。
Java程序設(shè)計環(huán)境折中了VisualBasic與原始C的事件處理方式,因此,它既有著強大的功能,又具有一定的復(fù)雜性。在AWT所知的事件范圍 內(nèi),完全可以控制事件從事件源(event source)例如,按鈕或滾動條,到事件監(jiān)聽器(event listener)的傳遞過程,并將任何對象指派給事件監(jiān)聽器。不過事實上,應(yīng)該選擇一個能夠便于響應(yīng)事件的對象。這種事件委托模型(event delegation model)與VisualBasic那種預(yù)定義監(jiān)聽器模型比較起來更加靈活。
事件源有一些向其注冊事件監(jiān)聽器的方法。當(dāng)某個事件源產(chǎn)生事件時,事件源會向為事件注冊的所有事件監(jiān)聽器對象發(fā)送一個通告。
像Java這樣的面向?qū)ο笳Z言,都將事件的相關(guān)信息封裝在一個事件對象(event object)中,在Java中,所有的事件對象都最終派生于java.util.EventObject類。當(dāng)然,每個事件類型還有子類,例 如,ActionEvent和WindowEvent。
不同的事件源可以產(chǎn)生不同類別的事件。例如,按鈕可以發(fā)送一個ActionEvent對象,而窗扣可以發(fā)送WindowEvent對象。
綜上所述,下面給出AWT事件處理機制的概要:
監(jiān)聽器對象是一個實現(xiàn)了特定監(jiān)聽器接口(listener interface)的類的實例。
事件源是一個能夠注冊監(jiān)聽器對象并發(fā)送事件對象的對象。
當(dāng)事件發(fā)生時,事件源將事件對象傳遞給所有注冊的監(jiān)聽器。
監(jiān)聽器對象將利用事件對象中的信息決定如何對事件做出響應(yīng)。
當(dāng)前名稱:網(wǎng)站建設(shè)核心之事件處理基礎(chǔ)
網(wǎng)站鏈接:http://jinyejixie.com/news/192777.html
網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營銷seo公司;服務(wù)項目有網(wǎng)站建設(shè)等
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)