【问题标题】:Java AWT KeyListener not workingJava AWT KeyListener 不工作
【发布时间】:2013-06-08 13:46:22
【问题描述】:

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

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

Main.java

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

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

感谢大家的帮助!

【问题讨论】:

标签: java applet awt keylistener keyevent


【解决方案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());
}

这是使用三种方法的example

【讨论】:

    【解决方案2】:

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

    请改用 getKeyChar()。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2017-02-18
      • 2017-07-28
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多