MATLAB предоставляет функцию addlistener
.
Слушатели позволяют нам отслеживать изменения свойств объекта и воздействовать на них.Например, мы можем создать очень простой слушатель, который будет отображать сообщение в командном окне при изменении свойства 'YLim'
объекта axes
:
% Example using axes
ax = axes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
Попробуйтепанорамирование осей или увеличение / уменьшение масштаба и посмотреть, что происходит.Это прекрасно работает.
Мне нужно сделать то же самое, но вместо этого использовать uiaxes
.
К сожалению, похоже, что нам запрещено это делать.Попробуйте запустить следующий пример:
% Example using uiaxes
ax = uiaxes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
Выдает эту ошибку:
Ошибка при использовании matlab.ui.control.UIAxes / addlistener При добавлении прослушивателя PostSet свойство 'YLim'в классе 'matlab.ui.control.UIAxes' не определено как SetObservable.
Я прочитал статьи Прослушайте изменения значений свойств и НаблюдайтеИзменения значений свойств , и я узнал, что свойство должно быть объявлено как SetObservable
, чтобы разрешить прослушивание:
classdef PropLis < handle
properties (SetObservable)
ObservedProp = 1 % <-- Observable Property
end
end
Я попытался взглянуть на определение класса UIAxes
с помощью edit matlab.ui.control.UIAxes
но это невозможно, потому что это P-файл .
Если 'YLim'
не наблюдается, то как я могу отслеживать изменения в этом свойстве?
Я использую App Designer в MATLAB R2018b.