我最近开始在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键,则没有任何反应
我找到了使用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
的功能。我发现以下建议使用post的java.awt.Robot()
。
我不能说解决方案很优雅,但是看起来它可以解决问题。