-1

我有我的代码。

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == 37){
        personx -=2;
    }
    if (e.getKeyCode() == 38){
        persony -=2;
    }
    if (e.getKeyCode() == 39){
        personx +=2;
    }
    if (e.getKeyCode() == 40){
        persony +=2;
    }
    try {
        Thread.sleep((long) 0.04);
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    }

代码不会移动角色。我检查了它是否被调用并写道:

public void keyPressed(KeyEvent e) {
    System.out.println("Test");
}

但它没有打印测试。

4

1 回答 1

1

您的代码表明您正在使用 Swing 或 AWT GUI。无论哪种方式,KeyListeners 都需要:

  • 首先将 KeyListener 添加到可见 GUI 上的组件
  • 确保该组件是可聚焦的
  • 并且听过的组件具有 GUI 的焦点。

如果这是一个 Swing GUI,我建议您实际上不要使用 KeyListener,而是使用Key Bindings,因为它们比 KeyListeners 更灵活,并且允许您在程序的多个部分中重用 AbstractActions。

于 2013-01-27T01:39:17.403 回答