在使用Matlab的GUIDE指定按钮的回调类型时,有几个选项,其中两个如下所述:(引自Matlab文档的字样)
ButtonDownFcn:当用户在指针打开时或在组件或图形的五个像素内按下鼠标按钮时执行
回调:控制操作。例如,当用户单击按钮或选择菜单项时执行。
描述似乎表明它们做同样的事情。这两种回调类型有什么区别?
答案 0 :(得分:4)
当您在uicontrol上按下鼠标按钮时,ButtonDownFcn
回调应该会触发,无论您是否释放鼠标按钮,以及您的操作是否最终激活了uicontrol。
激活uicontrol时应触发Callback
回调。激活对于不同的uicontols意味着不同的东西 - 对于按钮,它意味着按下按钮,对于复选框,这意味着选中或取消选择复选框,对于编辑框,这意味着文本内容被修改。
假设您有一个Callback
回调的按钮,但没有ButtonDownFcn
回调。如果将鼠标悬停在按钮上,单击并按住鼠标,远离按钮,然后释放,则不应触发Callback
回调,因为未按下按钮。但是如果它有一个ButtonDownFcn
回调,那么只要你第一次点击鼠标就会被激活,即使按钮最终没有被激活。
如果它同时具有,并且您完全点击并释放按钮以激活它,则ButtonDownFcn
应首先触发,因为它在激活之前的向下点击时触发。
答案 1 :(得分:0)
激活uicontrol时,应触发Callback回调。激活对于不同的uicontols意味着不同的东西 - 对于按钮,它意味着按下按钮,对于复选框,这意味着选中或取消选中复选框,对于编辑框,这意味着文本内容被修改
当您在uicontrol上按下鼠标按钮时,无论您是否释放鼠标按钮,以及您的操作是否最终激活了uicontrol,都会触发ButtonDownFcn回调。