2017-09-27 16 views
0

J'écris un code de jeu et j'utilise la classe KeyAdapter pour les entrées clavier, mais je rencontre un problème. J'étends et en utilisant la fonction de classe KeyAdapter comme suitPourquoi ne pouvons-nous pas surcharger à l'intérieur d'une classe?

class Kadapter extends KeyAdapter { 
    @Override 
    public void keyPressed(KeyEvent e) { 
    //here i will write required code 
    } 
} 

Quand je suis en train d'écrire ce en dehors de toute classe alors je ne reçois aucune erreur en remplaçant la touche de fonction pressais mais supposons maintenant si je définis à l'intérieur de tout autre classe comme illustré ici

class Arena extends JPanel { 
    Player pl; 

    Arena() { 
    pl = new Player(); 
    } 

    class Kadapter extends KeyAdapter { 
    @Override 
    public void KeyPressed(KeyEvent e) { 
    } 
    } 
} 

Ensuite, j'obtiens une erreur en remplaçant la fonction keyPressed. quelqu'un peut-il me dire pourquoi? Je voulais le définir à l'intérieur de la classe d'arène car j'aurai besoin de la même instance de classe de joueur dans la classe Kadapter. Eh bien, je pourrais passer cette instance à travers les fonctions. mais ma question ici est que pourquoi ne pouvons-nous passer outre la même fonction dans la classe d'arène? Je trouverai n'importe quelle solution alternative au problème de joueur qui n'est pas un problème mais s'il vous plaît dites-moi au sujet de ce problème d'Override. Je suis très curieux à ce sujet.

+4

KeyPressed est différent de keyPressed. Java est sensible à la casse. La prochaine fois, publiez l'erreur exacte et complète que vous obtenez: elle indique exactement quoi et où le problème est, et lire cela aide énormément. Tout devient beaucoup plus facile lorsque vous lisez les messages d'erreur. Et indenter votre code pour le rendre lisible. Voter pour fermer comme faute de frappe. –

+0

Merci je viens de remarquer mon erreur. –

Répondre

0

Vous pouvez définir et implémenter à l'intérieur de la classe imbriquée. Il ne devrait pas y avoir de problème.

Jusqu'à présent, je ne peux voir que le problème est avec le nom de la méthode comme KeyPressed.

class Arena extends JPanel { 
    Player pl; 

    Arena() { 
    pl = new Player(); 
    } 

    class Kadapter extends KeyAdapter { 
    @Override 
    public void KeyPressed(KeyEvent e) { 
    } 
    } 
} 

Il devrait être keyPressed

k comme des minuscules!

+0

Merci les gars. J'ai juste remarqué que j'écrivais 'K' en majuscule. C'était mon erreur. Merci encore –