Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1355 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Gestion d'événements et vous, vous faites comment ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion d'événements et vous, vous faites comment ?

n°174108
Cherrytree
cn=?
Posté le 10-07-2002 à 09:43:31  profilanswer
 

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 :

Code :
  1. private JButton button;
  2. button = new JButton("Click" );
  3. button.addActionListener(new ClickListener());
  4. class ClickListener implements ActionListener {
  5. public void actionPerformed(ActionEvent event) {
  6. }
  7. }


 
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
mood
Publicité
Posté le 10-07-2002 à 09:43:31  profilanswer
 

n°174111
darklord
You're welcome
Posté le 10-07-2002 à 09:46:20  profilanswer
 

Code :
  1. cancelButton.setText("Cancel" );
  2. cancelButton.addActionListener(new java.awt.event.ActionListener() {
  3.    public void actionPerformed(java.awt.event.ActionEvent evt) {
  4.       cancelButtonActionPerformed(evt);
  5.    }
  6. });
  7. // [...]
  8. private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {
  9.    this.dispose();
  10. }


Message édité par darklord le 10-07-2002 à 09:46:52

---------------
Just because you feel good does not make you right
n°174112
bobuse
Posté le 10-07-2002 à 09:46:45  profilanswer
 

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 ...

n°174115
Cherrytree
cn=?
Posté le 10-07-2002 à 09:48:11  profilanswer
 

DarkLord a écrit a écrit :

Code :
  1. cancelButton.setText("Cancel" );
  2. cancelButton.addActionListener(new java.awt.event.ActionListener() {
  3.    public void actionPerformed(java.awt.event.ActionEvent evt) {
  4.       cancelButtonActionPerformed(evt);
  5.    }
  6. });
  7. // [...]
  8. private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {
  9.    this.dispose();
  10. }





On reconnait la syntaxe de Forte. En tous cas, Forte fait comme ça, systématiquement.


---------------
Le site de ma maman
n°174136
darklord
You're welcome
Posté le 10-07-2002 à 10:12:50  profilanswer
 

tout à fait et je trouve ca relativement propre si tu n'as psa trop de boutons ...


---------------
Just because you feel good does not make you right
n°174145
Cherrytree
cn=?
Posté le 10-07-2002 à 10:17:47  profilanswer
 

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.


---------------
Le site de ma maman
n°174151
gfive
Posté le 10-07-2002 à 10:24:19  profilanswer
 

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...

n°174154
lorill
Posté le 10-07-2002 à 10:30:07  profilanswer
 

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) {
...
}
...
}

n°174160
Cherrytree
cn=?
Posté le 10-07-2002 à 10:39:05  profilanswer
 

La variété des solutions possibles me fascine complètement.


---------------
Le site de ma maman
n°174161
lorill
Posté le 10-07-2002 à 10:40:58  profilanswer
 

Faut avouer que c'est bien pensé comme système.

mood
Publicité
Posté le 10-07-2002 à 10:40:58  profilanswer
 

n°174180
bobuse
Posté le 10-07-2002 à 11:03:52  profilanswer
 

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 !  :D

n°174551
Cherrytree
cn=?
Posté le 10-07-2002 à 17:06:35  profilanswer
 

Ouais, c'est de la belle ouvrage.


---------------
Le site de ma maman
n°174607
veryfree
Posté le 10-07-2002 à 17:53:21  profilanswer
 

Cherrytree a écrit a écrit :

On reconnait la syntaxe de Forte. En tous cas, Forte fait comme ça, systématiquement.




 
JB aussi

n°174608
gfive
Posté le 10-07-2002 à 17:53:56  profilanswer
 

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! :D)

n°174609
veryfree
Posté le 10-07-2002 à 17:54:22  profilanswer
 

perso jfait comme dark

n°174683
Cherrytree
cn=?
Posté le 10-07-2002 à 22:07:18  profilanswer
 

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! :D)



C'est dommage que ton code soit propriété privée. Salaud de FT.

n°174716
gfive
Posté le 10-07-2002 à 23:13:29  profilanswer
 

:p Je bosse pas pour FT, et bon, c'est tellement con à faire que ça, je peux vous le passer ! :D
 
Alors :  
 
L'interface quidoivent implémenter mes évènements :  
 

Code :
  1. public interface MyEvent {
  2.   public abstract void handleEvent(Object listener);
  3. }

 
 
 
La classe qui manage les évènements (dans mon cas, le core du client chat)
 

Code :
  1. public class MyEventManager {
  2. blah blah....
  3. private Vector listeners = new Vector();
  4. public void addListener(Object listener) {
  5.    if (!listeners.contains(listener)) {
  6.          listeners.addElement(listener);
  7.    }
  8. }
  9. /** remove the given object from the MyEvent listeners list*/
  10.     public void removeListener(Object o) {
  11. listeners.removeElement(o);
  12.     }
  13.     /** Fire the given event to the appropriate listeners.*/
  14.     public void fireEvent(MyEvent event) {
  15. for (int i = 0; i < listeners.size(); i++) {
  16.     event.handleEvent(listeners.elementAt(i));
  17. }
  18.     }
  19. }

 
 
Et par exemple, pour le TotoEvent :
 
 

Code :
  1. public void handleEvent(Object listener) {
  2.     if (listener instanceof TotoListener) {
  3.       ((TotoListener)listener).totoEventOccured(this);
  4.     }
  5.   }

 
 
et dans l'interface TotoListener :  
 

Code :
  1. public interface TotoListener {
  2. public void totoEventOccured(TotoEvent event);
  3. }

 
 
Simple, non???
 

n°174720
gfive
Posté le 10-07-2002 à 23:20:51  profilanswer
 

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.

n°178705
Cherrytree
cn=?
Posté le 19-07-2002 à 12:10:25  profilanswer
 

J'avais pas vu ta reply. Chouette méthode en tous cas. Et bien documentée, je te félicite. :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Gestion d'événements et vous, vous faites comment ?

 

Sujets relatifs
=> Soft de gestion de LCD <= Y'a du monde de motivé pour aider?Logiciel de gestion de parc informatique
Gestion des utilisateurs sous Access[XML/XSL] Problème de gestion des espaces
Gestion de projet : Methode MERISE[VC++] gestion des evenements
[JAVA] Gestion des évênementsGestion des évènements avec les MFC
Gestion des évènements avec les MFCGestion des évènements avec les MFC
Plus de sujets relatifs à : Gestion d'événements et vous, vous faites comment ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR