0

我一直在玩 Java,并添加了一个 KeyListener。当我键入一个键时,它会打印“0”,我希望它打印键码。

密钥.java

import java.awt.event.*;

public class Key implements KeyListener {
public void keyPressed(KeyEvent e) {

}

public void keyReleased(KeyEvent e) {

}

public void keyTyped(KeyEvent e) {
    System.out.println("TYPED: " + Integer.toString(e.getKeyCode()));
}
}

主.java

public void init() {
    addKeyListener(new Key());
    addMouseListener(new Mouse());

    this.setBackground(new Color(100, 100, 255));
    this.setSize(screen);
}

感谢所有的帮助!

4

2 回答 2

1

只需阅读文档:

void keyTyped(KeyEvent e)

在键入键时调用。有关键类型事件的定义,请参见 KeyEvent 的类描述。

所以通过描述:

public int getKeyCode()

返回与此事件中的键关联的整数 keyCode。返回: 键盘上实际按键的整数代码。(对于 KEY_TYPED 事件,keyCode 是 VK_UNDEFINED。)

常数VK_UNDEFINED是:

public static final int VK_UNDEFINED = 0;

所以这是完全正常的,你只会得到 0。

你应该使用:

public void keyTyped(KeyEvent e) {
    System.out.println("TYPED: " + e.getKeyChar());
}

这是使用这三种方法的示例。

于 2013-06-12T12:41:09.580 回答
0

对于 KEY_TYPED 事件,密钥代码未定义。检查java文档: http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html#getKeyCode()

请改用 getKeyChar()。

于 2013-06-12T12:42:15.570 回答