正如MATLAB文档中对于编辑框uicontrol的引用或者在这篇文章中所述,当点击其他组件、菜单栏或背景图形用户界面时,编辑框回调函数就会被执行。但是,在我尝试使用这个功能时,除非编辑框文本发生变化或按下了回车键,否则我迄今为止都没有看到回调函数的执行。我想要实现的是,即使没有输入任何内容,只要焦点从编辑框移开,就执行编辑框回调函数。请告诉我我错过了什么以及我该如何做到这一点?提前感谢您。
底层的Java对象有一个回调函数叫做FocusLostCallback
,它可以在对象失去焦点时执行你想要的操作,即使你没有进行任何更改。
你需要从MATLAB文件交换中心获取findjobj
。然后,获取Java句柄并像往常一样设置回调函数(确保在尝试获取Java句柄时uicontrol
可见):
jh = findjobj(myEditBox); % myEditBox is a uicontrol handle
set(jh, 'FocusLostCallback', @myCallback);
更完整的未记录回调列表可以在Yair Altman的未记录MATLAB博客中找到。
这种方法在单行文本框上完美运作,但对多行文本框(uicontrol,样式编辑,最大值=2)没有任何影响。