1

我最近开始在 matlab 中使用应用程序设计器来制作小程序,但我遇到了问题。

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

我当前的代码(简化)

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 时没有任何反应

4

1 回答 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.
我发现以下帖子建议使用java.awt.Robot().

我不能说这个解决方案很优雅,但看起来它解决了问题。

于 2020-03-27T20:44:43.283 回答