我在NetBeans IDE中有一个Java Swing应用程序.
我创建了一个表单并将KeyListener附加到我的各种控件中:
jButton1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
keyTypedEvent(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
并keyTypedEvent定义为:
private void keyTypedEvent(java.awt.event.KeyEvent evt)
{
System.out.println(evt);
appendDisplay(String.valueOf(evt.getKeyChar()));
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个println,evt看看会发生什么,并验证我的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.
我有一个名为"保存更改"的按钮,如果在JTextField组件中检测到任何更改,它将保存所有更改.现在,我假设如果用户键入任何内容,则内容已更改.
我正在使用KeyListener,但从这个问题来看,它听起来像使用除了ActionListener错误之外的任何东西?