MATLAB - 编辑框的回调执行

时间:2014-06-09 20:04:07

标签: matlab user-interface focus

在MATLAB文档中引用了编辑框uicontrol或在此处说明 post,当单击另一个组件或菜单栏或后台GUI时,将执行编辑框回调。但是在我尝试使用此功能时,到目前为止我还没有能够看到回调执行,除非更改了编辑框文本或按下了Enter键。我想要实现的是,即使没有输入任何内容,只要编辑框中有焦点丢失,就会执行编辑框回调。请告诉我这里我缺少什么以及如何做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:2)

底层Java对象有一个名为FocusLostCallback的回调函数,它可以执行你想要的操作 - 当对象的焦点丢失时执行,即使你没有改变任何内容。

您需要MATLAB文件交换中的findjobj。然后,获取Java句柄并像往常一样设置回调(确保在尝试获取Java句柄时uicontrol可见):

jh = findjobj(myEditBox); % myEditBox is a uicontrol handle
set(jh, 'FocusLostCallback', @myCallback);

可以在Yair Altman's Undocumented MATLAB blog找到更完整的未记录的uicontrol回调列表。

答案 1 :(得分:1)

此方法与单行文本框完美配合,但它对多行文本框(uicontrol,样式编辑,max = 2)有任何影响