Определить комбинацию клавиш в JTextField? - PullRequest
1 голос
/ 16 декабря 2011

Как определить комбинацию клавиш Shift + Tab в JTextField?

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

это то, что вы хотите?

javax.swing.JTextField textField = new javax.swing.JTextField();
textField.setFocusTraversalKeysEnabled(false);
javax.swing.Action myAction = new javax.swing.AbstractAction()
{
  public void actionPerformed(ActionEvent e)
  {
    //Insert arbitrary code here
  }
};
textField.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Event.SHIFT_MASK), "myCode");
textField.getActionMap().put("myCode", myAction);
1 голос
/ 16 декабря 2011

Tab и Shift + Tab только / по умолчанию (только KeyBinding может изменить это) о перемещении Focus из одного JComponentдругой, я думаю, что вы должны взглянуть на FocusListener с подробными описаниями в FocusSubsystem , уведомление Focus пришло из Native OS и по умолчанию asynchronous, большую часть временитребуется задержка их действия / события, завернутые в invokeLater()

1 голос
/ 16 декабря 2011

Это особый случай, поскольку Shift + Tab является клавишей обхода фокуса.Подсистема фокуса обычно использует ключи обхода фокуса, поэтому вам нужно предотвратить это, вызвав

component.setFocusTraversalKeysEnabled(false);

на вашем JTextField.После этого вы сможете обнаружить комбинацию Shift + Tab и обработать ее самостоятельно.

См. Как написать прослушиватель ключей дляпример программы, которую вы можете скачать и поэкспериментировать, чтобы увидеть, как она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...