15.1-全棧Java筆記:Java事件模型是什么?事件控制的過(guò)程有哪幾步??

應(yīng)用前邊兩節(jié)上一章節(jié)的內(nèi)容,大家可以完成一個(gè)簡(jiǎn)單的界面,但是沒(méi)有任何的功能,界面完全是靜態(tài)的,如果要實(shí)現(xiàn)具體功能的話,必須要學(xué)習(xí)事件模型。

事件模型簡(jiǎn)介及常見(jiàn)事件模型

對(duì)于采用了圖形用戶界面的程序來(lái)說(shuō),事件控制是非常重要的。

一個(gè)源(事件源)產(chǎn)生一個(gè)事件并把它(事件對(duì)象)送到一個(gè)或多個(gè)監(jiān)聽(tīng)器那里,監(jiān)聽(tīng)器只是簡(jiǎn)單地等待,直到它收到一個(gè)事件,一旦事件被接收,監(jiān)聽(tīng)器將處理這些事件。

一個(gè)事件源必須注冊(cè)監(jiān)聽(tīng)器以便監(jiān)聽(tīng)器可以接收關(guān)于一個(gè)特定事件的通知。

每種類型的事件都有其自己的注冊(cè)方法,一般形式為:

void addTypeListener(TypeListener e);


注意:

注冊(cè)事件的方法名并不真的是addTypeListener,其中的Type是事件類型,根據(jù)不同的事件追加不同類型的監(jiān)聽(tīng),如:追加按鈕按下事件的添加監(jiān)聽(tīng)方法為:addActionListener(ActionEvent? e),而e是一個(gè)事件監(jiān)聽(tīng)器的引用。


事件控制的過(guò)程

事件控制過(guò)程可以分為以下四步:

1. 監(jiān)聽(tīng)器對(duì)象屬于一個(gè)類的實(shí)例,這個(gè)類實(shí)現(xiàn)了一個(gè)特殊的接口,名為“監(jiān)聽(tīng)者接口”(Listener interface)。

2. 事件源是一個(gè)對(duì)象,它可以注冊(cè)一個(gè)或多個(gè)監(jiān)聽(tīng)器對(duì)象,以便向其發(fā)送事件對(duì)象。

3. 事件源在發(fā)生事件時(shí)向所有注冊(cè)的監(jiān)聽(tīng)器發(fā)送事件對(duì)象。

4. 監(jiān)聽(tīng)器對(duì)象根據(jù)事件對(duì)象中封裝的信息來(lái)確定如何響應(yīng)這個(gè)事件。

圖1 常用事件類的體系結(jié)構(gòu)圖

如果覺(jué)得這個(gè)過(guò)程比較抽象,那么我們看看這樣一個(gè)場(chǎng)景:在城市的十字路口上為了監(jiān)控交通違章,那么在路口上(事件源)就會(huì)安裝一個(gè)監(jiān)控?cái)z像頭(監(jiān)聽(tīng)器對(duì)象),這個(gè)監(jiān)控?cái)z像頭在有違章發(fā)生時(shí)(事件觸發(fā)時(shí))會(huì)自動(dòng)捕獲違章,然后傳達(dá)到監(jiān)控大廳,監(jiān)控大廳根據(jù)違章情況作出相應(yīng)的處理(事件響應(yīng),也可以說(shuō)是事件處理,就是發(fā)生事件后做什么處理方式)。

那么我們不難發(fā)現(xiàn)這樣一個(gè)事實(shí):出現(xiàn)不同的事件需要用不同的事件類來(lái)捕獲。如圖1所示,為常用的事件類的體系結(jié)構(gòu)。

我們?cè)賮?lái)看看事件類型的具體說(shuō)明,如表1所示。

下節(jié)我們會(huì)對(duì)幾種常用的事件類型進(jìn)行詳細(xì)介紹。



「全棧Java筆記」是一部能幫大家從零到一成長(zhǎng)為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗(yàn),曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計(jì)及研發(fā)工作,從小白逐漸做到工程師、高級(jí)工程師、架構(gòu)師。精通Java平臺(tái)軟件開(kāi)發(fā),精通JAVAEE,熟悉各種流行開(kāi)發(fā)框架。

筆記包含從淺入深的六大部分:

A-Java入門(mén)階段

B-數(shù)據(jù)庫(kù)從入門(mén)到精通

C-手刃移動(dòng)前端和Web前端

D-J2EE從了解到實(shí)戰(zhàn)

E-Java高級(jí)框架精解

F-Linux和Hadoop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評(píng)論 6 342
  • (一) 他說(shuō)他昨晚做了一個(gè)夢(mèng)。 沒(méi)想到我們的交談是以一個(gè)夢(mèng)開(kāi)始的。說(shuō)明一下,我是一個(gè)微信公眾號(hào)的發(fā)布者,每期都會(huì)約...
    goho閱讀 1,724評(píng)論 16 18
  • 每個(gè)人都有生的權(quán)利,我有,大哥有,當(dāng)然瘋子也有,可我現(xiàn)在還是不能很好的接受他,或許我不該恨他的。 自那...
    蘇墨大哥閱讀 546評(píng)論 1 7
  • 今天終于把上周姨媽來(lái)那天就該洗掉的衣服給洗了。 背單詞和寫(xiě)簡(jiǎn)書(shū)這兩件事都堅(jiān)持了兩個(gè)星期沒(méi)斷的樣子。 我家老鼠用老家...
    奚所以閱讀 202評(píng)論 0 0

友情鏈接更多精彩內(nèi)容