【问题标题】:Java getKeyCode only returns 0 in keyPressed [duplicate]Java getKeyCode 仅在 keyPressed 中返回 0 [重复]
【发布时间】:2015-10-28 11:03:31
【问题描述】:

我正在尝试制作一个需要移动的简单游戏。唯一的问题是当我键入一个键时,每个键都返回一个 keyCode '0'。我已经阅读了一些关于 Stack Overflow 的信息,我发现我的问题的所有答案都是使用 KeyPressed 而不是 KeyTyped。唯一的问题是我使用的是 KeyPressed,所有的键仍然返回 0。

我的 KeyListener 代码如下:

旁注:print(bool) = System.out.print(bool),我已经厌倦了写整个东西。

frame.addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_W) {up = true; print(up);}
                    if(e.getKeyCode() == KeyEvent.VK_A) {left = true; print(left);}
                    if(e.getKeyCode() == KeyEvent.VK_S) {down = true; print(down);}
                    if(e.getKeyCode() == KeyEvent.VK_D) {right = true; print(right);}
                    System.out.println("Pressed " + e.getKeyCode());
                }

                @Override
                public void keyReleased(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_W) {up = false;}
                    if(e.getKeyCode() == KeyEvent.VK_A) {left = false;}
                    if(e.getKeyCode() == KeyEvent.VK_S) {down = false;}
                    if(e.getKeyCode() == KeyEvent.VK_D) {right = false;}
                    //System.out.println("Released " + e.getKeyChar());

                }

                @Override
                public void keyPressed(KeyEvent e) {}
            });

这很可能是一个简单的解决方案,但我对这方面的编码不是很有经验。感谢您的帮助。

【问题讨论】:

  • 如果您的代码与示例相同,那么不,您没有使用keyPressed()。从keyTyped() 那里复制你的代码,看看会发生什么。

标签: java keylistener


【解决方案1】:

我正在使用 KeyPressed,所有的键仍然返回 0。

这是keyPressed 处理程序的实现:

@Override
public void keyPressed(KeyEvent e) {}

这似乎是不言自明的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2012-01-30
    • 2012-09-01
    相关资源
    最近更新 更多