GUI中的Event

一、概念

  程序中某些代码的执行,需要用户的参与,例如登录代码,通常需要用户点击登录按钮才会执行,否则永远不会执行。

  相当于一个特殊的条件,用户的参与方式可以是点击鼠标、在键盘上按下某个按键、最大最小化窗口或触摸屏幕等。

当用户进行了这类操作,就可以触发一个事件。

二、事件的属性

Event type   ---   事件类型: 通常包括鼠标事件、键盘事件、窗口事件、动作事件。

source         ---    事件源: 路径的起点

target          ---    事件目标:路径的终点

注:路径是指树形结构中按顺序的节点集合

下图中,从根节点A出发,共有三条路径,分别为A-B-D、A-B-E和A-C

GUI中的Event

三、事件的处理机制

不管是哪种程序语言的GUI,你会发现,视图部分都可转化为树形结构,有父节点和子节点。

在GUI中的表现,点击了子节点就一定点击了父节点,点击父节点不一定点击了子节点。

如果父子节点都注册了同种类型的监听器,执行的时候该如何决策呢?这就需要了解事件机制了。

事件派发分阶段:

(1)捕获阶段:从根节点开始沿路径到目标节点派发事件

(2)冒泡阶段:目标节点沿路径向根结点传递

那么,事件的处理机制分为捕获机制和冒泡机制。

(1)捕获机制:

   在捕获阶段执行,先执行父节点的事件处理方法,再执行子节点的事件处理方法。

   如果只需要执行父节点的处理方法,可以阻止向子节点传递。

(2)冒泡机制:

   在冒泡阶段执行,先执行子节点的事件处理方法,再执行父节点的事件处理方法。

   如果只需要执行子节点的处理方法,可以阻止向父节点传递。