Matlab GUIDE工具栏上的工具的ButtonDownFcn不起作用

时间:2017-02-07 00:51:31

标签: matlab matlab-figure matlab-guide

我使用Matlab GUIDE在Matlab编写了一个GUI程序。 在工具栏上创建了一个工具并编写了一个右键单击回调函数,如下所示,但是当我在GUI上右键单击该工具时,没有响应。

function MyTool_ButtonDownFcn(hObject, eventdata, handles)
waitfor(msgbox('Hello button down function','Hello button down'));
disp('Hello disp');

从属性检查器中,ButtonDownFcn的值为:

@(hObject,eventdata)main('MyTool_ButtonDownFcn',hObject,eventdata,guidata(hObject))

我尝试使用另一个带回调功能的按钮进行调试,以执行'keyboard'。

function bugfindbutton_ClickedCallback(hObject, eventdata, handles)
keyboard

这确认了与该工具的MyTool_ButtonDownFcn(hObject, eventdata, handles)相关联的函数ButtonDownFcn的存在,并且不会被任何其他函数删除。但右键单击该工具既不提供msgbox也不提供命令窗口输出。

我想在“MyTool”切换按钮(工具栏上的自定义工具)上单击鼠标右键以执行MyTool_ButtonDownFcn功能。我该怎么办?

1 个答案:

答案 0 :(得分:0)

uitoggletooluipushtool个对象会忽略ClickedCallback。您应该使用h = uitoggletool( ... 'CData', rand(16, 16, 3), ... 'OnCallback', @(s,e)disp('on'), ... 'OffCallback', @(s,e)disp('off')); % Get the underlying java object using findobj jtoggle = findjobj(h); % Specify a callback to be triggered on any mouse release event set(jtoggle, 'MouseReleasedCallback', @(s,e)callback(h,e)) function callback(src, evnt) if evnt.getButton() == 3 disp('Right Click!') end % Get the handles struct handles = guidata(src); % Modify the handles handles.value = 2; % Save the handles guidata(src, handles); end 属性来设置回调。但是,该回调只会在鼠标左键单击时执行,并且不会在鼠标右键单击时触发。

如果确实需要将回调绑定到鼠标右键,则可以使用文件交换中的findjobj实用程序访问基础Java对象并分配自定义回调

{{1}}