Это приложение должно отправлять команду перемещения двигателя при нажатии кнопки графического интерфейса или клавиши со стрелкой и команду остановки двигателя при отпускании кнопки графического интерфейса или клавиши со стрелкой. Эти привязки отлично работают для стрелки вниз, пока не будет нажата соответствующая кнопка графического интерфейса. После нажатия кнопки GUI клавиша со стрелкой игнорируется. Если изменение фокуса убило привязку, как можно запрограммировать привязки так, чтобы они не зависели от изменения фокуса? Если нет, то в чем реальная проблема и как ее устранить?
Привязки клавиш
Action tiltStop = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
MotorStop(TILT_AXIS);
}
};
mainPanel.getInputMap().put(KeyStroke
.getKeyStroke(KeyEvent.VK_DOWN, 0, true), "tiltStop");
mainPanel.getActionMap().put("tiltStop", tiltStop);
Action tiltDown = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
MotorMove(TILT_AXIS, NEGATIVE_DIR);
}
};
mainPanel.getInputMap().put(KeyStroke
.getKeyStroke(KeyEvent.VK_DOWN, 0, false), "tiltDown");
mainPanel.getActionMap().put("tiltDown", tiltDown);
Кнопки графического интерфейса
private void jButtonAxisDownMousePressed(java.awt.event.MouseEvent evt) {
MotorMove(TILT_AXIS, NEGATIVE_DIR);
}
private void jButtonAxisDownMouseReleased(java.awt.event.MouseEvent evt) {
MotorStop(TILT_AXIS);
}