我的代码有什么问题,我不能使用KeyPressed方法?

时间:2012-08-02 16:16:41

标签: java acm-java-libraries

public void run() {
    setSize(700,700);
    setGame();
}
public GObject drawPlayer() {
    GOval player = new GOval(getWidth()/2,getHeight()/2,10,10);
    player.setFilled(true);
    player.setFillColor(Color.red);
    return player;
}
public void keyPressed(KeyEvent e) {
        switch(e.getKeyCode()) {
        case KeyEvent.VK_UP: Player.move(0, -10);break;
        case KeyEvent.VK_DOWN: Player.move(0, 10);break;
        case KeyEvent.VK_LEFT: Player.move(-10, 0);break;
        case KeyEvent.VK_RIGHT: Player.move(10, 0);break;
    }
}
public GRect object;
    public void setGame() {
    setObject();
    GObject Player = drawPlayer();
    add(Player);
    addKeyListeners();
}

我创建了椭圆形播放器然后,我使用addKeyListeners方法来检测键 当我运行时,我不能使用arrowkey移动播放器对象?? 我的代码有什么问题???

1 个答案:

答案 0 :(得分:0)

假设上面的代码位于扩展GraphicsProgram的类中,那么这是有效的代码,应该按照编写的方式工作。您正在检查正确的密钥代码(尽管确保它们不会以某种方式在您的输入设备上重新映射),但您可以正确添加addKeyListeners()

一个问题是GraphicsProgram对象必须具有焦点,否则密钥将无法识别。要进行测试,您可以启动该程序并立即单击小程序窗口以获得焦点。此时,应识别密钥。