文档

概述事件和监听器

为什么使用事件和监听器

事件通知广播对象发生,如属性值变化或用户与应用程序交互。听众告知感兴趣的事件发生时执行函数。使用事件沟通更改对象。听众的反应通过执行回调函数。

有关更多信息,请参见事件和监听器的概念

事件和监听器基础

当使用事件和监听器:

  • 只有处理类可以定义事件和监听器。

  • 定义的事件名称事件类定义的块(事件和监听器的语法)。

  • 使用事件属性来指定访问事件(事件属性)。

  • 调用处理handle.notify触发事件的方法。事件通知广播命名事件侦听器注册这个事件。

  • 使用处理handle.addlistener方法夫妇一个监听器到事件源对象。MATLAB®破坏事件的侦听器当源被摧毁。

  • 使用处理handle.listener方法来创建监听器不耦合的生命周期事件源对象。这种方法是有用的在事件源和侦听器被定义在不同的组件,您希望能够添加、删除或修改。您的应用程序代码控制侦听器对象生命周期。

  • 侦听器回调函数必须定义至少有两个输入参数——事件源对象处理事件数据(见侦听器回调的语法的更多信息)。

  • 修改数据传递给每个侦听器回调通过子类化event.EventData类。

预定义的事件

MATLAB定义了听属性集和查询事件。有关更多信息,请参见监听改变属性值

所有处理对象定义一个事件命名ObjectBeingDestroyed。MATLAB触发这个事件之前调用类的析构函数。

事件和监听器的语法

定义一个事件的名称事件代码块:

classdef类名称<处理…事件EventName结束结束

例如,MyClass定义了一个事件命名StateChange:

classdefMyClass <处理事件StateChange结束结束

触发事件使用处理通知方法:

classdef类名称<处理…事件EventName结束方法函数anyMethod(obj)…通知(obj,EventName);结束结束结束

任何函数或方法可以触发事件类的特定实例定义的事件。例如,triggerEvent方法调用通知触发的StateChange事件:

classdefMyClass <处理事件StateChange结束方法函数triggerEvent (obj)通知(obj,“StateChange”)结束结束结束

触发StateChange事件的triggerEvent方法:

obj = MyClass;obj.triggerEvent

创建监听器

定义一个侦听器使用处理handle.addlistenerhandle.listener方法。通过一个函数处理的侦听器回调函数使用这些语法:

  • addlistener (SourceOfEvent。”EventName”,@functionName)——对一个普通的函数。

  • addlistener (SourceOfEvent。”EventName”,@Obj.methodName)——的方法Obj

  • addlistener (SourceOfEvent。”EventName”,@ClassName.methodName)——对一个类的静态方法类名称

ListenerObject= addlistener (SourceOfEvent,EventName@listenerCallback);

addlistener返回侦听器对象。输入参数:

  • SourceOfEvent类的一个对象,定义了事件。这个对象的事件触发。

  • EventName——事件中定义的类的名称事件代码块。

  • @listenerCallback——一个函数句柄引用函数执行的事件。

例如,创建一个监听器对象StateChange事件:

函数lh = createListener (src) lh = addlistener (src,“StateChange”@handleStateChange)结束

为侦听器定义回调函数。回调函数必须接受作为前两个参数事件源对象和事件数据对象:

函数eventData handleStateChange (src)结束

相关的话题

这个主题有帮助吗?