Java程序設計基礎 課件 第12章 事件處理_第1頁
Java程序設計基礎 課件 第12章 事件處理_第2頁
Java程序設計基礎 課件 第12章 事件處理_第3頁
Java程序設計基礎 課件 第12章 事件處理_第4頁
Java程序設計基礎 課件 第12章 事件處理_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十二章事件處理12.1事件基本概念12.2委托事件模型12.3事件處理程序本章小結

12.1事件基本概念

12.1.1事件窗口的事件(event)指的是用戶使用鼠標、鍵盤在窗口程序中對窗口組件進行的各種操作,例如鼠標點擊、進入、移動、拖動以及鍵盤鍵入等。事件也可以由操作系統觸發,例如時間計時器等,事件類的主要類層次如圖12-1所示。

圖12-1事件類層次結構

java.util.EventObject是所有事件類的超類,具有方法getSource(),用于返回產生某事件的組件對象(事件源);java.awt.AWTEvent是所有AWT事件的根事件類,此類及其子類取代了原來的java.awt.Event類,具有方法getID(),返回某事件的ID號。

Java的部分事件類描述如表12-1所示。

12.1.2事件源

事件源(EventSource)即事件發生的地方,主要指的是事件發生在哪個窗口組件上。上述的事件類大多與相應的事件源對應,如表12-2所示。

12.1.3監聽器接口與監聽器對象

窗口組件的事件如何進行處理呢?Java將窗口組件的事件處理“委托”給監聽器對象來完成,監聽器對象是監聽器接口的實現類對象。

1.監聽器接口

Java的接口java.util.EventListener是所有監聽器接口的父接口,該父接口下約有70多個子接口,較為常用的接口如表12-3所示。

不同的監聽器接口監聽的事件源不同,監聽的具體事件也不同;在監聽器接口中聲明了被監聽組件發生相應事件時應該被調用的事件處理方法,方法的具體代碼由監聽器接口的實現類來完成。例如鍵盤監聽器接口KeyListener將監聽某個窗口組件的鍵盤事件,接口的定義如下:

鍵盤監聽器接口KeyListener聲明了三個方法監聽某個組件上對應的事件,當事件發生時將調用相應的方法:

(1)鍵盤按鍵被按下,調用keyPressed方法。

(2)鍵盤按鍵抬起來,調用keyReleased方法。

(3)鍵盤按鍵被敲擊一次,調用keyTyped方法。

2.監聽器對象

監聽器對象是監聽器接口實現類的實例對象,該對象具有監聽窗口組件指定事件的能力,當該事件在窗口組件上發生時,監聽器對象能夠獲取該事件對象并執行預定義的方法,用以實現事件處理。

對于不同組件可能發生的對應事件,需要選擇相應的監聽器接口,自定義監聽器類實現該接口,將事件發生時要執行的動作代碼寫到接口聲明的方法中,然后創建監聽器對象與被監聽的組件進行綁定,就可以“坐等”該組件上指定事件的發生。

12.1.4監聽器適配器

監聽器適配器(ListenerAdapter)是空實現了對應監聽器接口的類,即監聽器適配器將監聽器接口的所有方法進行了實現,但是方法體為空,這樣可方便程序員繼承監聽器適配器而不用實現監聽器接口,如圖12-2所示。

圖12-2監聽器適配器

因為適配器已經空實現了監聽器的所有抽象方法,對于自定義監聽器類而言,繼承了適配器也就相當于空實現了監聽器接口。對于接口中的多個抽象方法,需要在哪個方法中寫事件處理代碼,只需要重寫那個方法即可,其它不需要的方法可以不用管。常用監聽器對應的適配器如表12-4所示。

12.2委托事件模型

從前面對Java事件處理的基本概念的描述可知,窗口組件對事件的處理是“委托”給監聽器對象來完成的,而事件處理要求Java程序員需要做的有以下幾步:(1)編寫自定義監聽器類,可以實現對應的監聽器接口,也可以繼承對應的監聽器適配器,在該類中實現/重寫對應事件的處理方法。

(2)使用自定義監聽器類創建監聽器對象,將該對象與要監聽的窗口組件進行“關聯”。

(3)當該窗口組件上被監聽的事件發生時,就會被監聽器對象監聽到并獲得該事件對象,然后自動執行預定義的事件處理方法。

該模型如圖12-3所示。圖12-3委托事件模型

圖12-3中,要注意兩類線型:

(1)虛線說明:

①需要在程序中預先定義好監聽器接口實現類。

②在監聽器類中要完成具體的事件處理方法,即預先定義的事件處理的動作代碼。

③將監聽器實現類產生的監聽器對象與窗口組件進行注冊/綁定。

(2)實線說明:

①當用戶有鼠標或鍵盤的操作在被監聽的窗口組件上發生時,系統將產生相應的事件對象。

②事件源組件將事件對象傳遞給已注冊的監聽器對象,然后由監聽器對象接管事件處理,展現出預定義的事件處理動作。

12.3事件處理程序

12.3.1標準事件處理JButton按鈕組件的標準動作是點擊鼠標左鍵,該動作將產生ActionEvent事件對象,然后由ActionListener監聽器實現類的對象來監聽該事件并進行處理,ActionListener接口只定義了一個方法:publicvoidactionPerformed(ActionEvent

e);

按照上述委托事件模型的描述,對按鈕的事件進行處理,只需要完成下面兩步操作:

(1)編寫監聽器接口實現類實現ActionListener接口,在actionPerformed方法中寫入點擊按鈕的將要實現的動作代碼。

(2)將該用戶自定義監聽器類的對象與按鈕組件進行注冊(綁定)。

完成以上兩步操作后,當用戶使用鼠標點擊該按鈕時,預定義的事件處理動作代碼就會被自動運行。

程序結果:.

點擊第一個按鈕結果

點擊第二個按鈕結果:

12.3.2標準事件處理的另外兩種形式

上述標準事件處理的程序結構形式是在BookView類中定義了一個用戶自定義監聽器的內部類MyButtonListener,這是一種比較常用的程序結構,還可以使用下面兩種形式來完成事件處理。

1.?BookView1類自己實現ActionListener接口

程序結果:

程序結構與上述程序運行結果是一樣的,在此不再重復。

2.?BookView2類使用匿名監聽器類的方式

程序結果:

程序結構與上述程序運行結果是一樣的,在此不再重復。

12.3.3具體事件處理

上述程序是標準事件處理,主要是監聽處理一些組件的標準動作。如果想針對更為具體的組件事件進行處理,就需要實現具體的事件監聽器接口。

程序結果:

本章小結1.事件是可能發生在窗口組件上的各種動作,包括鍵盤、鼠標的動作,窗口拉伸,焦點的獲得與失去等等,java.util.EventObject下面的各個事件子類與這些事件對應。2.事件源是事件發生的地方,不同的窗口組件作為事件源對應不同的事件。3.不同的事件監聽器接口對應不同組件上可能發生的事件,聲明了相應的監聽方法,就表示當監聽到組件上發生的事件時要執行相應的方法,具體代碼由實現監聽器接口的實現類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論