【发布时间】:2013-01-20 19:32:17
【问题描述】:
我在 NetBeans IDE 中有一个 Java Swing 应用程序。
我制作了一个表单并将 KeyListener 附加到我的各种控件中:
jButton1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
keyTypedEvent(evt);
}
});
而keyTypedEvent 是这样定义的:
private void keyTypedEvent(java.awt.event.KeyEvent evt)
{
System.out.println(evt);
appendDisplay(String.valueOf(evt.getKeyChar()));
}
我在evt 中添加了println,以查看会发生什么并验证我的keylistener 是否有效。
当我构建并运行我的应用程序时,我意识到输出似乎总是有一个keycode = 0
为了验证这一点,我将 println 更改为 evt.getKeyCode(),它始终返回 0。
我可能完全误解了 KeyCode 的作用,但我认为它会与此处的 Oracle 文档中的值相一致:
http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_ESCAPE
例如,VK_ESCAPE 的值为 27。
【问题讨论】:
-
不要使用 KeyListener。使用 DocumentListener 或 Swing 键绑定。
标签: java swing keylistener keyevent