Как сохранить фокус на приложении при отключении кнопки в дизайнере приложений Matlab - PullRequest
1 голос
/ 26 марта 2020

Я недавно начал использовать дизайнер приложений в 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

1 Ответ

0 голосов
/ 27 марта 2020

Я нашел обходной путь, используя 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().

Не могу сказать, что решение элегантное, но похоже, что оно решает проблему.

...