2014-08-30 70 views
0

我正在使用按鍵函數窗體KeyAdapter。一切工作正常,但我得到一個警告說: 方法keyPressed()忽略超類中定義的方法。 我不知道如何解決警告。方法keyPressed()忽略超類中的已定義方法

這是我使用的代碼行。

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

在此先感謝。

+0

我假設你必須調用'super.keyPressed(e)'來修復警告? – 2014-08-30 11:38:11

回答

1

雖然我的編譯器/ IDE不顯示這些警告,我敢肯定那是因爲你不叫KeyAdapter「方法keyPressed。我認爲這個警告是非常有用的,因爲你重寫了一個非抽象的方法,這意味着該方法已經在KeyAdapter中實現。

很明顯,在這種情況下,默認實現什麼也不做,所以你不需要調用它,但是,在另一種情況下,超類的實現可能依賴於它的方法。重寫它而不調用它可能會破壞你的超類的代碼。

你可以簡單地忽略這個警告或只需調用方法:

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

簡單地增加@Override可能會刪除警告爲好,因爲這說明你知道你覆蓋的方法。

+0

謝謝,已經忘記了這一點。 它修復了錯誤! :) – shedes 2014-08-30 12:31:20

1

從我的經驗來看,這是由於覆蓋父類的方法,但不會調用super.method()

爲了擺脫這一點,你的方法是這樣的:

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

謝謝,已經忘記了這一點。 它修復了錯誤! :) – shedes 2014-08-30 12:32:18