création d'un KeyListener ... helpppp.. [java] - Programmation
Marsh Posté le 09-07-2001 à 11:17:58
c pas tout a fais comme ça que ça marche.
Il faut que tu crees ta classe du listener. Tu peux le faire dans un fichier separé (conseillé si tu penses que ton listener va etre gros), ou au sein de la classe meme (inner Class).
bref la on va dire que tu le fais en inner Class.
Il faut que tu fasses :
Code :
|
ça c pour la innner classe.
Puis ensuite, il faut que tu declare ton listener au composant auquel tu souhaites effectuer un controle.
en supposant que ce soit un JTextField :
Code :
|
Mais bon, au lieu de faire avec l'interface KeyListener, tu peux le faire avec KeyAdapter (par contre ce n'est plus une interface, il faut donc etendre au lieu d'implementer. Le seul avantage, c que t pas obligé de redefinir toutes les methodes, tu ne fas que ce qui t'interesses vraiment.
voila !
Marsh Posté le 10-07-2001 à 17:42:13
En fait le fait que ta classe implémente l'interface Tartempion, ça indique qu'elle possède un ensemble de méthodes définies dans cette interface.
Marsh Posté le 10-07-2001 à 23:25:32
Petoulachi n'a que partiellement raison : tu peux tout à fait faire implémenter KeyListener à la classe qui lance les évènements :
public class MyTextfield extends TextField implements KeyListener {
public MyTextfiled(String text) {
super(text);
addKeyListener(this);
}
...
}
et ensuite, tu écris les méthodes déclarées dans l'interface.
En gros, les interface permettent de passer outre (en partie seulement) l'impossibilité de faire de l'héritage mulitple. Dans le cas présent, la class MyTextfield hérite de TextField, et vérifie aussi le prototype de l'interface KeyListener : cet objet est reconnu en tant que KeyListener, et à ce titre, peut être appellé comme tel. Si tu fais :
MyTextfield mt = new MyTextfield("toto" );
et ben (mt instanceof MyTextField) renverra true...
Bon, je sais, c'est pas forcément très clair, mais les interfacs, c'est vachement utile en Java (et en POO en général)
Marsh Posté le 11-07-2001 à 09:37:29
merci, je sais tres bien que c possible de faire heriter la classe principale d'un Listener. Toutefois je le deconseille car c vraiment pas tres propre comme programmation ...
a +
Marsh Posté le 12-07-2001 à 00:08:02
Comment ça, pas très propre?? Ca dépend ce que tu fais..Par Y' plein de classes qui s'écoutent elles-même dans l'API java (ah oui, si vous avez téléchargé le JDK, jetez un oeil sur les sources, on en apprend parfois de belles... )..Pis quand tu codes une applet, par exemple, et que la taille finalme du .jar est un facteur important, ben t'hésites pas!
Marsh Posté le 12-07-2001 à 19:38:51
bah programmez comme des porcs, moi ça me gene pas, mais j'aimerai pas etre celui qui passe derriere vous ...
Marsh Posté le 12-07-2001 à 21:34:14
gfive a écrit a écrit : MyTextfield mt = new MyTextfield("toto" ); et ben (mt instanceof MyTextField) renverra true... |
Hihi... heureusement ke ca renvoie True...
Marsh Posté le 12-07-2001 à 21:38:10
Au fait, je vous rappelle juste une chose : les interfaces en JAVA c pas pour faire de l'heritage multiple...
Marsh Posté le 13-07-2001 à 12:25:58
Si tu veux je te fais voir un peu sur quoi je travail, si tu dis que c'est de la merde je te dirai d'aller revoir les pattern Java histoire de te culturer !!
Marsh Posté le 09-07-2001 à 11:02:19
Salut !
bon je suis pas doué en java .. j'ai du mal !!
voila mon pb : j'a n'arrive pas a creer un KeyListener..
j'ai adapté u nexemple dans un bouquin ..
mais dans mon source :
class Projet extends JFrame implements KeyListener{
voila l'erreur :
Projet should be declared abstract; it does not define keyTyped(java.awt.event.KeyEvent) in Projet
je capte pas pkoi il ne veu pas de mon implement Keylistener.
merci d'essayer de m'aider