【问题标题】:Trouble implementing KeyListener无法实现 KeyListener
【发布时间】:2016-05-07 20:46:30
【问题描述】:

我正在制作一个简单的游戏,我只是想实现一个 KeyListener。它告诉我必须实现抽象方法 KeyReleased 但我已经实现了三个 KeyListener 方法(我认为)。任何帮助,将不胜感激。这是代码:

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

public class mainGame extends JFrame implements KeyListener{
JPanel pane4=new JPanel();

public static void main (String [] args){
    new mainGame();
}
public mainGame(){
    super ("game");
    setSize(800,600);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setResizable(false);
    setLocationRelativeTo(null);
    pane4.addKeyListener(this);
    add(pane4);
    setVisible(true);
}
public void KeyTyped(KeyEvent e){
    //not using this method
}
public void KeyPressed(KeyEvent e){

    int keyID=e.getKeyCode();

    if (keyID==e.VK_ESCAPE){
        dispose();
        menu.main(null);
    }
    else if (keyID==e.VK_KP_RIGHT){

    }
    else if (keyID==e.VK_KP_RIGHT){

    }


}
public void KeyReleased(KeyEvent e){
    //not using this method
}

}

【问题讨论】:

  • 大写很重要。这是keyReleased 不是KeyReleased。投票结束是一个印刷错误。
  • 为防止将来出现类似问题,请始终在您认为应该覆盖超级方法的任何方法之前使用@Override 注释。这样做会使编译器警告您任何错误。

标签: java keylistener


【解决方案1】:

大小写很重要。这是keyReleased 不是KeyReleased。投票结束是一个印刷错误。

为防止将来出现类似问题,请始终在您认为应该覆盖超级方法的任何方法之前使用@Override 注释。这样做会使编译器警告您任何错误。例如,

@Override
public void KeyReleased(KeyEvent e){
    //
}

上面的代码会导致编译器错误,并提示您需要修复方法签名中的某些内容以使其适合。

其他无关点:

  • 最好避免让您的 GUI 类实现侦听器接口,因为这会给类带来过多的责任。最好使用匿名内部类(如果您不熟悉它们,请查看它们),或者使用私有内部类或独立类。
  • 您最好使用键绑定而不是 KeyListener 来响应 Swing 非文本组件按键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2014-04-03
    • 2014-02-17
    • 2020-11-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多