2014-08-30 2 views
0

키 누르기 함수 양식 KeyAdapter를 사용하고 있습니다. 모든 것은 정상적으로 작동하지만 다음과 같은 경고 메시지가 나타납니다. 메서드 keyPressed()는 수퍼 클래스에서 정의 된 메서드를 무시합니다. 경고를 수정하는 방법을 모르겠습니다.메소드 keyPressed()는 수퍼 클래스의 정의 된 메소드를 무시합니다.

다음은 내가 사용하는 코드 줄입니다.

public void keyPressed(KeyEvent e) { 
    keys[e.getKeyCode()] = true; 
    } 

미리 감사드립니다.

+0

경고를 수정하려면'super.keyPressed (e)'를 호출해야한다고 가정합니다. –

답변

1

, 당신이 KeyAdapter를 호출하지 않기 때문에 그 '의 확신 s keyPressed 방법. 이 경고는 비 - 추상 메서드를 재정의하기 때문에 매우 유용하다고 생각합니다.이 메서드는 이미 KeyAdapter에 구현되어 있습니다.

물론이 경우 기본 구현에서는 아무 것도하지 않으므로 호출 할 필요가 없지만 다른 시나리오에서는 수퍼 클래스의 구현이 해당 메서드에 의존 할 수 있습니다. 이것을 호출하지 않고 재정의하면 수퍼 클래스의 코드가 손상 될 수 있습니다.

당신은 단순히이 경고를 무시하거나 메소드를 호출 할 수

@Override public void keyPressed(KeyEvent e) { 
    super.keyPressed(e); //call the default implementation 
    //do your own stuff 
} 

단순히 당신이 방법을 무시하고 있다는 인식하고 있음을 보여주기 때문에,뿐만 아니라 경고를 제거 할 수 @Override를 추가.

+0

감사합니다. 잊어 버렸습니다. 오류가 수정되었습니다! :) – shedes

1

제 경험상 부모 클래스의 메서드를 재정의했기 때문에 super.method()을 호출하지 않았기 때문입니다.

이 제거하려면 방법은 다음과 같을 것이다 : 내 컴파일러/IDE는 이러한 경고를 표시하지 않지만

public void keyPressed(KeyEvent e) { 
    super.keyPressed(e); 
    keys[e.getKeyCode()] = true; 
} 
+0

감사합니다. 잊어 버렸습니다. 오류가 수정되었습니다! :) – shedes

관련 문제