一、概念
程式中某些代碼的執行,需要使用者的參與,例如登入代碼,通常需要使用者點選登入按鈕才會執行,否則永遠不會執行。
相當于一個特殊的條件,使用者的參與方式可以是點選滑鼠、在鍵盤上按下某個按鍵、最大最小化視窗或觸摸螢幕等。
當使用者進行了這類操作,就可以觸發一個事件。
二、事件的屬性
Event type --- 事件類型: 通常包括滑鼠事件、鍵盤事件、視窗事件、動作事件。
source --- 事件源: 路徑的起點
target --- 事件目标:路徑的終點
注:路徑是指樹形結構中按順序的節點集合
下圖中,從根節點A出發,共有三條路徑,分别為A-B-D、A-B-E和A-C

三、事件的處理機制
不管是哪種程式語言的GUI,你會發現,視圖部分都可轉化為樹形結構,有父節點和子節點。
在GUI中的表現,點選了子節點就一定點選了父節點,點選父節點不一定點選了子節點。
如果父子節點都注冊了同種類型的監聽器,執行的時候該如何決策呢?這就需要了解事件機制了。
事件派發分階段:
(1)捕獲階段:從根節點開始沿路徑到目标節點派發事件
(2)冒泡階段:目标節點沿路徑向根結點傳遞
那麼,事件的處理機制分為捕獲機制和冒泡機制。
(1)捕獲機制:
在捕獲階段執行,先執行父節點的事件處理方法,再執行子節點的事件處理方法。
如果隻需要執行父節點的處理方法,可以阻止向子節點傳遞。
(2)冒泡機制:
在冒泡階段執行,先執行子節點的事件處理方法,再執行父節點的事件處理方法。
如果隻需要執行子節點的處理方法,可以阻止向父節點傳遞。