KeyStroke.getKeyStroke () Swing возвращает UNKNOWN

Символ ниже - это символ русского языка

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

Но работает на символ как «С»

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

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

Всего 1 ответ


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

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

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

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

char c = (char) keyStroke.getKeyCode();

Есть идеи?

10000