我使用KeyAdapter的keypressed函数。一切正常,但我得到一个警告: 方法keyPressed()忽略超类中定义的方法。 我不知道如何修复警告。
这是我使用的代码行。
public void keyPressed(KeyEvent e) {
keys[e.getKeyCode()] = true;
}
提前致谢。
答案 0 :(得分:1)
根据我的经验,这是因为覆盖了父类的方法,但没有调用super.method()
。
要摆脱这种情况,您的方法将如下所示:
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
keys[e.getKeyCode()] = true;
}
答案 1 :(得分:1)
虽然我的编译器/ IDE没有显示这些警告,但我很确定这是因为你没有调用KeyAdapter
的{{1}}方法。我认为这个警告非常有用,因为你要覆盖非抽象方法,这意味着该方法已经在keyPressed
中实现。
显然,在这种情况下,默认实现什么也不做,所以你不需要调用它,但是,在不同的场景中,超类的实现可能依赖于它的方法。在不调用它的情况下覆盖它可能会破坏超类的代码。
您可以忽略此警告或只是调用方法:
KeyAdapter
简单地添加@Override public void keyPressed(KeyEvent e) {
super.keyPressed(e); //call the default implementation
//do your own stuff
}
也可能会删除警告,因为这表明您知道您正在覆盖某个方法。