JAVA事件概述


Java對事件的處理采用授權的事件模型,也成為委托事件模型。在這個模型下,每個組件都有相應的事件,如按鈕單擊事件,文本域具有內容改變事件等。當某個事被觸發后,組件就會將事件發送給組件注冊的每一個事件監聽器,事件監聽器中定義了與不同事件相對應的事件的處理,此時事件監聽器會根據不同的事件信息調用根據不同的事件信息調用不同的事件處理者,完成對這次事件的處理,只有向組件注冊的事件監聽器才會受到事件信息。此種模型的顯著特點是,當組件被觸發后,本身不去處理,而將處理的操作交給第三方來完成。例如,在GUI單擊了一個按鈕,此時按鈕就是一個事件源對象,按鈕本身沒有權利對這次單擊做出反應,它做的就是將信息發給本身注冊的監聽器(事件處理者,實質上也是個類)來處理。

如果要理解Java的事件處理者,需要掌握下面幾個概念:事件、事件源和監聽器(事件處理者)。首先回答"什么是事件"這一基本概念。在授權事件模型中,事件是一個描述事件源狀態改變的對象。通過鼠標、鍵盤與GUI直接或間接交互都會產生事件,按回車鍵、單擊按鈕、在一個下拉列表中選擇一個選項等操作。程序有時需對發生的事件作出反應來實現特定的任務。例如,用戶單擊"單擊"或"取消"按鈕,程序就可能將作出不同的反應。

其實事件本身就是一個抽象的概念,它是表現另一對象狀態變化的對象。在面向對象的程序設計中,事件消息是對象間通信的基本方式。在圖形用戶界面程序中,GUI組件對象根據用戶的交互產生各種類型的事件消息,這些事件消息由應用程序的事件處理代碼捕獲,在進行相應的處理后驅動消息響應對象作出反應。當在圖形化用戶界面上進行操作的時候,單擊某個可響應的事件,如按鈕、菜單,都會期待某個事件的發生。其實圍繞GUI的所有活動都會發生事件,但Java事件處理機制卻可以讓人們挑選出需要處理的事件。事件在Java中與其他對象基本是一樣,但有一點不同的是,事件是由系統自動生成並自動傳遞到適當的事件處理程序中。

事件是由事件源產生,事件源可以是GUI組件、JavaBen或由生成事件能力的對象。在GUI組件的情況下,事件源是組件的同位體(對於AWT組件來說)或租金本身(對於Swing組件來說),即事件源是一個生成事件的對象,如常見的按鈕、文本框、菜單等。一個事件源可能會生成不同類型的事件,如文本框事件源可以產生不同類型的事件,如文本框事件源可以產生內容改變事件和回車事件。事件源提供了一組方法,用於為事件注冊一個或多個監聽器。每種事件的類型都有其自己的注冊方法。一般形式為:

public void add<EventType>Listener(TypeListener e)

事件發生后,組件本身並不處理,需要交給監聽器(另外一個類)來處理。實際上監聽器也可稱為事件處理者。監聽器對象屬於一個類的實例,這個類實現了一個特殊的接口,名為"監聽器接口"。監聽器負責處理事件源發生的事件,監聽器是一個對象,為了處理事件源發生的事件,監聽器會自動調用一個方法來處理事件.對每個明確的事件的產生,都相應地定義一個明確的Java方法。這些方法都集中定義事件監聽器接口中,這個接口要繼承java.util.EventListener。實現了事件監聽器接口中一些或全部方法的類就是事件監聽器。

伴隨着事件的發生,相應的狀態通常都封裝在事件狀態對象中,該對象必須繼承自java.util.EventObject。事件狀態對象作為參數傳遞給響應該事件的監聽者方中。產生某種特定事件源的標識是:遵從規定的設計格式為事件監聽器定義注冊方法,接收或者還有其他的額外操作時,就要在一個源與其他一個或多個監聽器之間插入一個事件適配器類的實例來建立他們之間的聯系。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM