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 !!
wouatouwouatou
Au fait, je vous rappelle juste une chose : les interfaces en JAVA c pas pour faire de l'heritage multiple...
:D
wouatouwouatou
gfive a écrit a écrit :
MyTextfield mt = new MyTextfield("toto" );
et ben (mt instanceof MyTextField) renverra true...
Hihi... heureusement ke ca renvoie True... :D
petoulachi
bah programmez comme des porcs, moi ça me gene pas, mais j'aimerai pas etre celui qui passe derriere vous ...
Bandenabos
D'accord avec gfive !!
gfive
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... :D)..Pis quand tu codes une applet, par exemple, et que la taille finalme du .jar est un facteur important, ben t'hésites pas!
petoulachi
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 +
gfive
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)
Bandenabos
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.
Kouye
ok merci a toi petoulachi :)
je vais essayer ainsi alors :)
a+
petoulachi
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 :
publicclass Controleur implements KeyListener
{
publicvoid keyPressed (KeyEvent e)
{
//code pour un key pressed
}
publicvoid keyTyped (KeyEvent e)
{
//code pour un key typed }
publicvoid keyReleased (KeyEvent e)
{
//code pour un key relesased }
}
ç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 :
JTextField text = new JTextField ();
text.addKeyListener(new Controleur());
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 ! :sol:
Kouye
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.