keyPressed和keyTyped有什么区别?

Quester-King 2012-04-13 10:35:07
下面的代码是我覆写的keyPressed方法,执行很正常。但是如果我把这个方法改成覆写keyTyped方法,方法体还是这个方法体,除了方法名改变其他都不改变,那这个方法就执行不正常了!它好像就不会执行switch语句了,这是为什么?

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(".");
}

}
}
...全文
2968 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_long_sky_ 2014-05-28
  • 打赏
  • 举报
回复
引用 6 楼 sdojqy1122 的回复:
API: 例如,按下 Shift 键会生成 keyCode 为 VK_SHIFT 的 KEY_PRESSED 事件,而按下 'a' 键将生成 keyCode 为 VK_A 的 KEY_PRESSED 事件。释放 'a' 键后,会激发 keyCode 为 VK_A 的 KEY_RELEASED 事件。另外,还会生成一个 keyChar 值为 'A' 的 KEY_TYPED 事件。
正解
fs08ab 2012-05-17
  • 打赏
  • 举报
回复
遇到同样问题,试了一下,3#是正解
sdojqy1122 2012-04-13
  • 打赏
  • 举报
回复
API:
例如,按下 Shift 键会生成 keyCode 为 VK_SHIFT 的 KEY_PRESSED 事件,而按下 'a' 键将生成 keyCode 为 VK_A 的 KEY_PRESSED 事件。释放 'a' 键后,会激发 keyCode 为 VK_A 的 KEY_RELEASED 事件。另外,还会生成一个 keyChar 值为 'A' 的 KEY_TYPED 事件。
sdojqy1122 2012-04-13
  • 打赏
  • 举报
回复
如果不想用keyPressed和 keyReleased,就重写方法,不放东西进去。
怕他调用父类的方法。
sdojqy1122 2012-04-13
  • 打赏
  • 举报
回复
打印出来就知道了。应该是一样的。都是调用KeyEvent的方法。
sunyiz 2012-04-13
  • 打赏
  • 举报
回复
API原文:
对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode 方法总是返回 VK_UNDEFINED。

所以键入键事件只能靠 getKeyChar 来区分了
Quester-King 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

keyPressed:键盘按下,未释放
keyTyped:键盘按下,然后释放。就是敲击的意思吧
[/Quote]
是不是他们getKeyCode这个方法的返回值也不一样
WJL_MGQS 2012-04-13
  • 打赏
  • 举报
回复
keyPressed:键盘按下,未释放
keyTyped:键盘按下,然后释放。就是敲击的意思吧

62,636

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧