如何检测文本编辑对象的焦点丢失?

nie*_*els 5 matlab user-interface focus

这是我第一次尝试在MATLAB中创建GUI.到目前为止,我还没有找到一种方法来检测何时将焦点从文本编辑移动到其他对象.我需要这样的功能,所以我可以"在现场"测试用户输入并将文本编辑的背景颜色更改为红色,如果输入是以不正确的方式形成的.

换句话说,最终用户能够在文本编辑中编写表达式,然后按Tab键移动到下一个文本编辑,同时在第一个文本中看到红色背景,这将非常方便如果输入有问题,请编辑.

我想到了几种检查用户输入的方法,但它们不如上面那么方便.我怎么能实现这样的东西?

gno*_*ice 7

按Tab键将焦点从可编辑文本框移动到另一个uicontrol对象时,将调用可编辑文本框的回调函数.因此,您只需要输入用于检查文本的代码,并在可编辑文本uicontrol的回调函数中提醒用户注意问题.

请注意,文档声明在以下其他条件下也将调用uicontrol的回调:

  • 单击另一个组件,菜单栏或GUI的背景.

  • 对于单行可编辑文本框,请按Enter.

  • 对于多行可编辑文本框,请按Ctrl+ Enter.

例如,这是一个非常简单的回调实现,如果字符串是'yes'或者'no',则将文本背景颜色设置为默认灰色值,如果字符串是其他任何内容,则将红色设置为红色:

function callback_fcn(hSource, eventData)
  if ismember(get(hSource, 'String'), {'yes', 'no'})
    set(hSource, 'BackgroundColor', [0.941176 0.941176 0.941176]);
  else
    set(hSource, 'BackgroundColor', 'r');
  end
end
Run Code Online (Sandbox Code Playgroud)