一、概念
程序中某些代码的执行,需要用户的参与,例如登录代码,通常需要用户点击登录按钮才会执行,否则永远不会执行。
相当于一个特殊的条件,用户的参与方式可以是点击鼠标、在键盘上按下某个按键、最大最小化窗口或触摸屏幕等。
当用户进行了这类操作,就可以触发一个事件。
二、事件的属性
Event type --- 事件类型: 通常包括鼠标事件、键盘事件、窗口事件、动作事件。
source --- 事件源: 路径的起点
target --- 事件目标:路径的终点
注:路径是指树形结构中按顺序的节点集合
下图中,从根节点A出发,共有三条路径,分别为A-B-D、A-B-E和A-C

三、事件的处理机制
不管是哪种程序语言的GUI,你会发现,视图部分都可转化为树形结构,有父节点和子节点。
在GUI中的表现,点击了子节点就一定点击了父节点,点击父节点不一定点击了子节点。
如果父子节点都注册了同种类型的监听器,执行的时候该如何决策呢?这就需要了解事件机制了。
事件派发分阶段:
(1)捕获阶段:从根节点开始沿路径到目标节点派发事件
(2)冒泡阶段:目标节点沿路径向根结点传递
那么,事件的处理机制分为捕获机制和冒泡机制。
(1)捕获机制:
在捕获阶段执行,先执行父节点的事件处理方法,再执行子节点的事件处理方法。
如果只需要执行父节点的处理方法,可以阻止向子节点传递。
(2)冒泡机制:
在冒泡阶段执行,先执行子节点的事件处理方法,再执行父节点的事件处理方法。
如果只需要执行子节点的处理方法,可以阻止向父节点传递。