KeyListener的一些问题

来源:互联网 发布:网络推广课程 编辑:程序博客网 时间:2024/05/01 03:18
今天遇到一个问题,那就是为JFrame添加KeyListener时发现按键没反应,最后的解决方案是为JFrame设置setFocusable(true);以获取焦点。之后发现这种方法指标不治本,当点击按钮后按键又没有反应了,因为焦点转移到了按钮上,解决方法是为每个按钮都加上KeyListener,注意即使JFrame实现了KeyListener,依然需要为JFrame添加事件监听器才可以。第二个问题是KeyCode、KeyID、KeyChar都是什么意思呢?        - KeyID:即事件ID,描述事件的状态        - KeyCode:键盘上每一个按钮都有对应码(Code),可用来查知用户按了什么键, 如[Shift]键code为16。                利用getKeyCode()方法就可以得知这个码,不过读者要注意,这个方法在keyTyped() 上是无法检测出来的,                因为keyTyped()只管用户输入的字符,而不会管到键盘的对应码。                因此你一定要将getKeyCode()方法写keyPressed()或keyReleased()方法中才会有效,因为这两个方法是处理比较低层的方法。        - KeyChar:处理的是比较高层的事件,返回的是每欠敲击键盘后得到的字符(中文输入法下就是汉字)        - KeyModifiersText:你可以直接使用getModifiers()方法来得到modifiers参数。                这个方法是定义在 InputEvent类中,而KeyEvent继承它,因此就能直接使用这个方法。                同样,你必须将getKeyModifiersText()与 getModifiers()方法放在keyPressed()或keyReleased()方法中才会有效。

附上 键盘KeyCode值列表
keycode

keycode

keycode

keycode

0 0
原创粉丝点击