我正在制作一个简单的游戏,我只是想实现一个 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
。由于打印错误而投票结束。
为了防止将来出现类似问题,请始终在您认为应该覆盖 super 方法的任何方法之前使用@Override
注释。这样做将使编译器警告您任何错误。例如,
@Override
public void KeyReleased(KeyEvent e){
//
}
上面的代码将导致编译器错误,并提示您需要修复方法签名中的某些内容以使其适合。
其他不相关的点:
- 最好避免让 GUI 类实现监听器接口(interface),因为这会赋予该类太多的责任。最好使用匿名内部类(如果您不熟悉它们,请查找它们),或者私有(private)内部类或独立类。
- 您可能最好使用键绑定(bind)而不是 KeyListener 来对 Swing 非文本组件按键使用react。
关于java - 实现 KeyListener 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093534/