Gestion d'événements et vous, vous faites comment ? - Java - Programmation
Marsh Posté le 10-07-2002 à 09:46:20
Code :
|
Marsh Posté le 10-07-2002 à 09:46:45
heu moi, ça dépend des listener. Mais pour les boutons ou la souris, je fais dériver ma classe du listener directement ...
Mais quand c'est nu peu plus exotique, je fais une classe à part, ça permet de bien la repérer, et de pouvoir la réutiliser ...
Marsh Posté le 10-07-2002 à 09:48:11
DarkLord a écrit a écrit :
|
On reconnait la syntaxe de Forte. En tous cas, Forte fait comme ça, systématiquement.
Marsh Posté le 10-07-2002 à 10:12:50
tout à fait et je trouve ca relativement propre si tu n'as psa trop de boutons ...
Marsh Posté le 10-07-2002 à 10:17:47
DarkLord a écrit a écrit : tout à fait et je trouve ca relativement propre si tu n'as psa trop de boutons ... |
Je suis d'accord.
Marsh Posté le 10-07-2002 à 10:24:19
Bah, généralement, je m'arrange pour pas avoir 36 boutons dans la même classe, alors je fais implémenter ActionListener à ma classe, tout bêtement...
Marsh Posté le 10-07-2002 à 10:30:07
ben quand c'est un truc simple, j'implémente directement l'interface qui va bien dans la classe qui génère l'évenement.
Du style
class MaFrame extends JFrame implements ActionListener
{
...
monBouton.addActionListener(this);
...
public void actionPerformed(ActionEvent ae) {
...
}
...
}
Marsh Posté le 10-07-2002 à 10:39:05
ReplyMarsh Posté le 10-07-2002 à 11:03:52
lorill a écrit a écrit : Faut avouer que c'est bien pensé comme système. |
C'est clair, on serait même tenté de faire la même chose dans d'autres langages. Ces listener à toutes les sauces, c'est ben pratique tout de même !
Marsh Posté le 10-07-2002 à 17:06:35
ReplyMarsh Posté le 10-07-2002 à 17:53:21
Cherrytree a écrit a écrit : On reconnait la syntaxe de Forte. En tous cas, Forte fait comme ça, systématiquement. |
JB aussi
Marsh Posté le 10-07-2002 à 17:53:56
Houlà, moi, je me suis mitonné mon p'tit système, aussi, qui est assez pratique : dans mon client chat, j'ai une classe qui récupère les messages en provenance du serveur...Et comme je voulait pouvoir changer la GUI sans toucher au core, j'ai un système qui lance des évènements correspondants à des fonctionnalités du chat, mais comme j'ai plein d'évènements, et que je voulais pas me faire chier avec des addTotoListener()...
j'ai une seule méthode addListener(), et quand un évènement arrive, il détermine lui même quels listeners doivent le recevoir (c tout con, c à base de instanceOf, mais j'ai gagné en clarté à un point, avec ce truc! )
Marsh Posté le 10-07-2002 à 22:07:18
gfive a écrit a écrit : Houlà, moi, je me suis mitonné mon p'tit système, aussi, qui est assez pratique : dans mon client chat, j'ai une classe qui récupère les messages en provenance du serveur...Et comme je voulait pouvoir changer la GUI sans toucher au core, j'ai un système qui lance des évènements correspondants à des fonctionnalités du chat, mais comme j'ai plein d'évènements, et que je voulais pas me faire chier avec des addTotoListener()... j'ai une seule méthode addListener(), et quand un évènement arrive, il détermine lui même quels listeners doivent le recevoir (c tout con, c à base de instanceOf, mais j'ai gagné en clarté à un point, avec ce truc! ) |
C'est dommage que ton code soit propriété privée. Salaud de FT.
Marsh Posté le 10-07-2002 à 23:13:29
Je bosse pas pour FT, et bon, c'est tellement con à faire que ça, je peux vous le passer !
Alors :
L'interface quidoivent implémenter mes évènements :
Code :
|
La classe qui manage les évènements (dans mon cas, le core du client chat)
Code :
|
Et par exemple, pour le TotoEvent :
Code :
|
et dans l'interface TotoListener :
Code :
|
Simple, non???
Marsh Posté le 10-07-2002 à 23:20:51
J'avais aussi pensé à remplacer mon vecteur de listeners par une hashtable de vecteurs, référencés par noms de classes...Mais c pas pratique, pasqu'il faut que le core connaisse tous les types de listeners possibles (bah ouais, une classe peut implémenter plusieurs listeners) et donc, ça aurait été beaucoup moins dynamique : tel que c'est foutu là, je peux ajouter une classe d'évènement et le listener correspondant sans modifier l'existant.
Marsh Posté le 19-07-2002 à 12:10:25
J'avais pas vu ta reply. Chouette méthode en tous cas. Et bien documentée, je te félicite.
Marsh Posté le 10-07-2002 à 09:43:31
Perso, pour gérer un click sur un bouton, j'ai tendance à créer une classe interne qui implémente ActionListener et qui ne contient qu'une méthode spécifique à mon bouton. Je trouve ça propre et sympa.
exemple :
Et vous, quelles sont vos pratiques ? Quels trucs utilisez vous systématiquement ?
Message édité par Cherrytree le 10-07-2002 à 09:44:18
---------------
Le site de ma maman