首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

keyPressed和keyTyped有什么区别?解决思路

2012-04-14 
keyPressed和keyTyped有什么区别?下面的代码是我覆写的keyPressed方法,执行很正常。但是如果我把这个方法改

keyPressed和keyTyped有什么区别?
下面的代码是我覆写的keyPressed方法,执行很正常。但是如果我把这个方法改成覆写keyTyped方法,方法体还是这个方法体,除了方法名改变其他都不改变,那这个方法就执行不正常了!它好像就不会执行switch语句了,这是为什么?

Java code
private class Adapter extends KeyAdapter {        public void keyPressed(KeyEvent e) {            int vk = e.getKeyCode();            switch (vk) {            case KeyEvent.VK_0:                actions.doThat("0");                break;            case KeyEvent.VK_1:                actions.doThat("1");                break;            case KeyEvent.VK_2:                actions.doThat("2");                break;            case KeyEvent.VK_3:                actions.doThat("3");                break;            case KeyEvent.VK_4:                actions.doThat("4");                break;            case KeyEvent.VK_5:                actions.doThat("5");                break;            case KeyEvent.VK_6:                actions.doThat("6");                break;            case KeyEvent.VK_7:                actions.doThat("7");                break;            case KeyEvent.VK_8:                actions.doThat("8");                break;            case KeyEvent.VK_9:                actions.doThat("9");                break;            case KeyEvent.VK_PERIOD:                actions.doThat(".");            }        }    }


[解决办法]
keyPressed:键盘按下,未释放
keyTyped:键盘按下,然后释放。就是敲击的意思吧
[解决办法]
API原文:
对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode 方法总是返回 VK_UNDEFINED。

所以键入键事件只能靠 getKeyChar 来区分了
[解决办法]
打印出来就知道了。应该是一样的。都是调用KeyEvent的方法。
[解决办法]
如果不想用keyPressed和 keyReleased,就重写方法,不放东西进去。
怕他调用父类的方法。
[解决办法]
API:
例如,按下 Shift 键会生成 keyCode 为 VK_SHIFT 的 KEY_PRESSED 事件,而按下 'a' 键将生成 keyCode 为 VK_A 的 KEY_PRESSED 事件。释放 'a' 键后,会激发 keyCode 为 VK_A 的 KEY_RELEASED 事件。另外,还会生成一个 keyChar 值为 'A' 的 KEY_TYPED 事件。

热点排行
Bad Request.