MATLAB 提供了该addlistener
函数。
侦听器允许我们跟踪对象属性的变化并对其采取行动。例如,我们可以创建一个非常简单的侦听器,当对象的'YLim'
属性axes
发生更改时,它将在命令窗口中显示一条消息:
% Example using axes
ax = axes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
尝试平移轴或放大/缩小,看看会发生什么。这工作正常。
我需要做同样的事情,但使用 anuiaxes
代替。
不幸的是,看起来我们不允许这样做。尝试运行以下示例:
% Example using uiaxes
ax = uiaxes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
它抛出这个错误:
使用 matlab.ui.control.UIAxes/addlistener 时出错 添加 PostSet 侦听器时,“matlab.ui.control.UIAxes”类中的属性“YLim”未定义为 SetObservable。
我已阅读文章Listen for Changes to Property Values和Observe Changes to Property Values,我了解到必须将属性声明为SetObservable
允许被监听:
classdef PropLis < handle
properties (SetObservable)
ObservedProp = 1 % <-- Observable Property
end
end
我尝试通过查看UIAxes
类定义,edit matlab.ui.control.UIAxes
但这是不可能的,因为它是P-file。
如果'YLim'
不可观察,那么我如何跟踪该属性的变化?
我在 MATLAB R2018b 中使用App Designer 。