WindowButtonDownFcn conflicting with ButtonDownFcn
7 次查看(过去 30 天)
显示 更早的评论
What I want to achieve is this:
user clicks on an axes: -Run CallbackA
user clicks somewhere else in the figure: -Run CallbackB
What I have done is to set the ButtonDownFcn (CallbackA) of axes, and the WindowButtonDownFcn (CallbackB) of the figure.
Now the thing is that whenever I click on an axes, it runs both Callbacks (both WindowButtonDownFcn and ButtonDownFcn are triggered).
Can I avoid this, and trigger only one of them?
0 个评论
采纳的回答
Jan
2013-2-6
You can insert an axes object spanning this whole figure as a background and use its ButtonDownFcn:
BGcolor = get(0, 'DefaultFigureColor');
BGaxes = axes('Units', 'normalized', 'Position', [0,0,1,1], ...
'XTicks, [], 'YTicks', [], ...
'Color', BGcolor, 'XColor', BGcolor, 'YColor', BGcolor, ...
'ButtonDownFcn', 'disp(''Background'')');
DataAxes = axes('ButtonDownFcn', 'disp(''Data'')';
0 个评论
更多回答(1 个)
Mark
2014-5-13
编辑:Mark
2014-5-13
I was playing around with this recently and noticed that the ButtonDownFcn callback (not WindowButtonDownFcn) for a figure is only activated when the background is clicked. Try this:
hFig = figure;
hAx = axes;
set(hFig, 'ButtonDownFcn', @(~,~) disp('clicked background'));
set(hAx, 'ButtonDownFcn', @(~,~) disp('clicked axes'));
See documentation on figure properties:
"Button press callback function. Executes whenever you press a mouse button while the pointer is in the figure window, but not over a child object"
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!