在matlab应用程序设计器中禁用按钮时如何专注于应用程序

问题描述 投票:1回答:1

我最近开始在Matlab中使用App Designer来制作小程序,但我遇到了问题。

我有一个带有启动按钮的应用程序,当用户按下启动按钮时,我想禁用按钮,然后在设定的时间内对按键进行计数。之后,我想再次启用该按钮。但是当我禁用按钮时,不再检测到按键。

我当前的代码(简体)

function StartButtonPushed(app, event)
  app.StartButton.Enable = false;
  app.awatingResponse = true;                
  pause(20);
  app.StartButton.Enable = true;
end

function UIFigureWindowKeyPress(app, event)
  if strcmp(event.Key, 'control') % only counting the control key now
     disp('ctrl pressed') % just for testing
  end
end

如果我删除app.StartButton.Enable = false;,则一切正常,但如果按Ctrl键,则没有任何反应

matlab focus keypress matlab-app-designer
1个回答
0
投票

我找到了使用JAVA的解决方法。

app.StartButton.Enable = false;之后添加以下代码:

robot = java.awt.Robot();
robot.mousePress(java.awt.event.InputEvent.BUTTON1_MASK);
robot.mouseRelease(java.awt.event.InputEvent.BUTTON1_MASK);

该代码模拟鼠标左键单击。

[显然,许​​多开发人员抱怨缺少将焦点设置为uifigure的功能。我发现以下建议使用postjava.awt.Robot()

我不能说解决方案很优雅,但是看起来它可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.