我正在使用按鍵函數窗體KeyAdapter。一切工作正常,但我得到一個警告說: 方法keyPressed()忽略超類中定義的方法。 我不知道如何解決警告。方法keyPressed()忽略超類中的已定義方法
這是我使用的代碼行。
public void keyPressed(KeyEvent e) {
keys[e.getKeyCode()] = true;
}
在此先感謝。
我正在使用按鍵函數窗體KeyAdapter。一切工作正常,但我得到一個警告說: 方法keyPressed()忽略超類中定義的方法。 我不知道如何解決警告。方法keyPressed()忽略超類中的已定義方法
這是我使用的代碼行。
public void keyPressed(KeyEvent e) {
keys[e.getKeyCode()] = true;
}
在此先感謝。
雖然我的編譯器/ IDE不顯示這些警告,我敢肯定那是因爲你不叫KeyAdapter
「方法keyPressed
。我認爲這個警告是非常有用的,因爲你重寫了一個非抽象的方法,這意味着該方法已經在KeyAdapter
中實現。
很明顯,在這種情況下,默認實現什麼也不做,所以你不需要調用它,但是,在另一種情況下,超類的實現可能依賴於它的方法。重寫它而不調用它可能會破壞你的超類的代碼。
你可以簡單地忽略這個警告或只需調用方法:
@Override public void keyPressed(KeyEvent e) {
super.keyPressed(e); //call the default implementation
//do your own stuff
}
簡單地增加@Override
可能會刪除警告爲好,因爲這說明你知道你覆蓋的方法。
謝謝,已經忘記了這一點。 它修復了錯誤! :) – shedes 2014-08-30 12:31:20
從我的經驗來看,這是由於覆蓋父類的方法,但不會調用super.method()
。
爲了擺脫這一點,你的方法是這樣的:
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
keys[e.getKeyCode()] = true;
}
謝謝,已經忘記了這一點。 它修復了錯誤! :) – shedes 2014-08-30 12:32:18
我假設你必須調用'super.keyPressed(e)'來修復警告? – 2014-08-30 11:38:11