我有一个关于KeyListener的问题。当我得到KeyEvent并做一个getKeyChar()时,我想和*进行比较,我打算使用一个KeyEvent.VK_定义,它适用于很多键。
但是对于这个特定的键和其他一些键,值并不匹配。
* getKeyChar()将返回0x2a,getKeyCode()将返回0x38。0x38的定义是VK_8,而不是VK_ASTERISK,后者是0x97。
为什么某些键码匹配,而其他键码不匹配。大多数人都这样认为。如果我只是做一个字符比较,工作( == '*'),但我不确定这是否是最好的解决方案?
感谢大家的帮助!
发布于 2012-02-27 23:03:06
JComponent的依赖
如果要根据JTextComponent确定,则使用DocumentListener;如果要修改Char序列,则使用DocumentFilter
否则,请看KeyBindings,因为KeyListener是为AWT Components指定的
发布于 2012-02-27 23:16:25
KeyEvent.VK_ASTERISK是为标有*的(虚拟)键盘键保留的常量。它不必与某人按下键时产生的字符相匹配。如果要使用VK常量,则必须侦听key up和key down事件,并使用KeyEvent.getKeyCode()方法。如果要使用字符,则必须侦听键入键的事件并使用KeyEvent.getKeyChar()方法。
一些关键代码可能会匹配字符,因为这样更容易定义它;并不是真的需要这样做。
getKeyCode得到了一个输入星号的VK_8。您是按了实际的星号键还是必须键入Shift-8?https://stackoverflow.com/questions/9467109
复制相似问题