KeyStroke.getKeyStroke () Swing возвращает UNKNOWN - PullRequest
0 голосов
/ 17 мая 2019

Нижеследующий символ - символ русского языка

KeyStroke.getKeyStroke('П', ActionEvent.CTRL_MASK).getKeyCode(); // returns (int) 1055
KeyStroke.getKeyStroke(1055, ActionEvent.CTRL_MASK); //returns (javax.swing.KeyStroke) ctrl pressed UNKNOWN

Но работает для символа как 'C'

KeyStroke.getKeyStroke('C', 2).getKeyCode(); // returns (int) 67
KeyStroke.getKeyStroke(67, ActionEvent.CTRL_MASK); //returns (javax.swing.KeyStroke) ctrl pressed C

Просто так, как это показано для символа 'C', Как я могу заставить его работать для русского персонажа.

1 Ответ

0 голосов
/ 17 мая 2019

Метод toString() для KeyStroke объединяется с

  • модификаторы текста (ctrl, alt, ...)
  • «отпущен» или «нажат» в зависимости от флага onKeyRelease
  • текст ВК (виртуальный ключ), соответствующий с константой в KeyEvent (AWTKeyStroke.getVKText(keycode))

Все в порядке с вашим кодом, только клавиша 'П' не имеет соответствующей константы VK_ в классе KeyEvent. Список всех распознанных констант см. В KeyEvent Javadoc, Константы .

.

Хотите извлечь символ, соответствующий нажатой клавише? В этом случае используйте:

char c = (char) keyStroke.getKeyCode();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...