Swing的KeyStroke.getKeyStroke()返回UNKNOWN

时间:2019-05-17 12:23:07

标签: java swing unicode keystroke

下面的字符是俄语字符

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 :(得分:0)

toString()上的KeyStroke方法是从

连接的
  • 修饰符文本(ctrl,alt,...)
  • “释放”或“按下”取决于onKeyRelease标志
  • KeyEventAWTKeyStroke.getVKText(keycode))中的常量相对应的VK(虚拟密钥)文本

您的代码一切都很好,在VK_类中只有'П'键没有相应的KeyEvent常量。有关所有可识别的常数的列表,请参见KeyEvent Javadoc, Constants

是否要提取与按下的键相对应的字符? 在这种情况下,请使用:

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