使用KeyEvent,KeyListener等无法识别键输入

时间:2016-03-13 01:05:35

标签: java debugging keylistener

我正在使用以下代码尝试打印出一个数组并通过xaxis和yaxis的变量移动BufferedPicture(测试)。

还有一个名为“Screen”的类,但它与此问题无关。

    //StartController
    public void keyPressed(KeyEvent q) {
        if(q.getKeyCode() ==37){
            left = true;
        }
        if(q.getKeyCode() ==38){
            up = true;
        }
        if(q.getKeyCode() ==39){
            right = true;
        }
        if(q.getKeyCode() ==40){
            down = true;
        }
         }
    public void keyReleased(KeyEvent q) {
        if(q.getKeyCode() == 37){
            left = false;
        }
        if(q.getKeyCode() == 38){
            up = false;
        }
        if(q.getKeyCode() == 39){
            right = false;
        }
        if(q.getKeyCode() == 40){
            down = false;

    }
}
    //EndController
}

然后问题代码(代码中没有中断到} // StartController

{{1}}

1 个答案:

答案 0 :(得分:0)

我认为问题在于您没有在应用程序中实现或添加KeyListener。您必须实现KeyListener,并继承所有方法。

像这样:

import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 * Simple Canvas with KeyListener
 */
public class TestCanvas extends Canvas implements KeyListener, Runnable {

    public TestCanvas() {
        addKeyListener(this);
    }

    @Override
    public void keyTyped(KeyEvent e) {
        //Do Stuff    
    }

    @Override
    public void keyPressed(KeyEvent e) {
        //Do Stuff
    }

    @Override
    public void keyReleased(KeyEvent e) {
        //Do Stuff
    }
}

其次,我建议使用KeyEvent.VK_(某些键)来比较键代码值,这样您就不会依赖于每个键盘的常量始终为真的假设。