Matlab 如何设置uifigure中特定元素的焦点?

Matlab 如何设置uifigure中特定元素的焦点?,matlab,focus,matlab-app-designer,keyboard-input,matlab-gui,Matlab,Focus,Matlab App Designer,Keyboard Input,Matlab Gui,我有一个向用户显示SVG图像的应用程序,用户需要根据显示的内容填写两个编辑字段。由于这个过程需要重复很多次,所以我得出结论,如果用户交互只需要键盘,那么速度和效率将是最好的。为此,我必须确保以下几点: 这个数字是焦点 那个账单⭾ 按正确的顺序循环元素(edit1→ 编辑2→ 按钮) 无论何时刷新图像,都会聚焦正确的编辑字段 如前所述,通过切换图形可见性可以满足第一个要求。 第二个要求也很容易实现,仅要求按照特定顺序定义图形元素,如(uifigures)和(figures)所述。 我的困难在于第三

我有一个向用户显示SVG图像的应用程序,用户需要根据显示的内容填写两个编辑字段。由于这个过程需要重复很多次,所以我得出结论,如果用户交互只需要键盘,那么速度和效率将是最好的。为此,我必须确保以下几点:

  • 这个数字是焦点
  • 那个账单⭾ 按正确的顺序循环元素(edit1→ 编辑2→ 按钮)
  • 无论何时刷新图像,都会聚焦正确的编辑字段
  • 如前所述,通过切换图形可见性可以满足第一个要求。
    第二个要求也很容易实现,仅要求按照特定顺序定义图形元素,如(uifigures)和(figures)所述。

    我的困难在于第三个要求,具体来说,我不知道如何确保在需要时聚焦所需的编辑字段。请参考下面的类,其中<代码>焦点控制< /代码>方法只是占位符。

    classdef SVGAxisLimit
    我使用的是MatlabR2020A

    附笔。
    我决定使用UIFigure来实现这一点,因为他们的组件本机支持SVG的表示(尽管避免使用此组件)。

    看看
    UIFigure
    主要是一个网页,结果证明和的JavaScript Web API方法在这里很有用。剩下的唯一困难是找到某种方法来引用所讨论的web元素(widget)。幸运的是,R2020a中编辑字段对应的HTML元素由一个唯一的
    id
    属性标识,这使得使用非常简单的命令(例如)很容易引用它们。总之:

    function[]=focusControl(hObject)
    %hObject是需要集中的uicontrol的句柄
    [hWin,widgetID]=mlapptools.getWebElements(hObject);
    hWin.executeJS(sprintf(。。。
    “W=document.getElementById(“%s”);W.focus();W.select();”,widgetID.ID_val));
    结束
    

    在哪里可以找到
    mlapptools
    (披露:我是这个实用程序的合著者)。

    Nice!我想这不适用于
    uicontrol
    ?20年前我曾试图解决这个问题,但没有成功。也许我需要更新该UI,以便将新的
    UIFigure
    @CrisLuengo用于我遇到的解决方案中的“旧”图形。如果在您遇到问题时它不可用,也许您现在可以尝试一下?至于uifigures的总体情况——这是一个“工作的正确工具”——它们在某些方面比数字好,在其他方面更差。谢谢!当时我完全错过了这个变化。又好又容易。7.0大约是我第一次创建这个UI代码后的5年。从那以后我才开始使用它,没有做太多的更新或改进。