應(yīng)用前邊兩節(jié)上一章節(jié)的內(nèi)容,大家可以完成一個簡單的界面航背,但是沒有任何的功能秸妥,界面完全是靜態(tài)的,如果要實現(xiàn)具體功能的話沃粗,必須要學(xué)習(xí)事件模型。
事件模型簡介及常見事件模型
對于采用了圖形用戶界面的程序來說键畴,事件控制是非常重要的最盅。
一個源(事件源)產(chǎn)生一個事件并把它(事件對象)送到一個或多個監(jiān)聽器那里突雪,監(jiān)聽器只是簡單地等待,直到它收到一個事件涡贱,一旦事件被接收咏删,監(jiān)聽器將處理這些事件。
一個事件源必須注冊監(jiān)聽器以便監(jiān)聽器可以接收關(guān)于一個特定事件的通知问词。
每種類型的事件都有其自己的注冊方法督函,一般形式為:
void addTypeListener(TypeListener e);
注意:
注冊事件的方法名并不真的是addTypeListener,其中的Type是事件類型激挪,根據(jù)不同的事件追加不同類型的監(jiān)聽辰狡,如:追加按鈕按下事件的添加監(jiān)聽方法為:addActionListener(ActionEvent? e),而e是一個事件監(jiān)聽器的引用垄分。
事件控制的過程
事件控制過程可以分為以下四步:
1. 監(jiān)聽器對象屬于一個類的實例宛篇,這個類實現(xiàn)了一個特殊的接口,名為“監(jiān)聽者接口”(Listener interface)薄湿。
2. 事件源是一個對象叫倍,它可以注冊一個或多個監(jiān)聽器對象,以便向其發(fā)送事件對象豺瘤。
3. 事件源在發(fā)生事件時向所有注冊的監(jiān)聽器發(fā)送事件對象吆倦。
4. 監(jiān)聽器對象根據(jù)事件對象中封裝的信息來確定如何響應(yīng)這個事件。
如果覺得這個過程比較抽象坐求,那么我們看看這樣一個場景:在城市的十字路口上為了監(jiān)控交通違章蚕泽,那么在路口上(事件源)就會安裝一個監(jiān)控攝像頭(監(jiān)聽器對象),這個監(jiān)控攝像頭在有違章發(fā)生時(事件觸發(fā)時)會自動捕獲違章瞻赶,然后傳達到監(jiān)控大廳赛糟,監(jiān)控大廳根據(jù)違章情況作出相應(yīng)的處理(事件響應(yīng),也可以說是事件處理砸逊,就是發(fā)生事件后做什么處理方式)璧南。
那么我們不難發(fā)現(xiàn)這樣一個事實:出現(xiàn)不同的事件需要用不同的事件類來捕獲。如圖1所示师逸,為常用的事件類的體系結(jié)構(gòu)司倚。
我們再來看看事件類型的具體說明,如表1所示篓像。
下節(jié)我們會對幾種常用的事件類型進行詳細介紹动知。
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G员辩,10年Java研發(fā)經(jīng)驗盒粮,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作奠滑,從小白逐漸做到工程師丹皱、高級工程師妒穴、架構(gòu)師。精通Java平臺軟件開發(fā)摊崭,精通JAVAEE讼油,熟悉各種流行開發(fā)框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數(shù)據(jù)庫從入門到精通
C-手刃移動前端和Web前端
D-J2EE從了解到實戰(zhàn)
E-Java高級框架精解
F-Linux和Hadoop