Gestion d'une variable de classe

Gestion d'une variable de classe - Java - Programmation

Marsh Posté le 01-11-2003 à 23:17:34    

Bonsoir !
 
J'ai une appli avec un menu qui dispose différents sous-menus.
J'aimerai, quand on clique sur un sous-menu, que la variable "choix" prenne la valeur selon le sous-menu choisi.
( tout le monde suit là ?)
Je n'arrive pas à gérer le passage de variables -> quand j'ai l'actionPerformed qui est activée, je n'arrive pas à changer la variable "choix" qui est globale.  :pt1cable:  
 
[ mode code over-simplifié on ]
 
class MaClasse {
    String choix; //variable globale
 
    JMenuItem menuChoix1 = new JMenuItem("Choix1" );
    menuChoix1.addActionListener( new EcouteurChoixMenu("choix1" ) );
 
   // on peut en mettre plusieurs comme ça :  
   JMenuItem menuChoix2 ...  
   menuChoix2.addActionListener ...
}
 
 
//et j'ai une classe d'écouteur :
 
class EcouteurChoixMenu implements ActionListener {
   
    String choixRécupéré;
 
    EcouteurChoixMenu(String choixEnvoyé) {
       choixRécupéré = choixEnvoyé;
    }
 
    public void actionPerformed(ActionEvent e) {
    // je ne sais pas
    }
 
}
 
[ mode code simplifié off ]
 
 
Je pense que ça doit etre hyper simple, tellement simple que je n'arrive meme plus à savoir comment on peut faire...


---------------
dieu créa l'homme et meuh fit la vache
Reply

Marsh Posté le 01-11-2003 à 23:17:34   

Reply

Marsh Posté le 02-11-2003 à 00:21:07    

t'as plusieurs possibilitées ...
la plus simple et la plus souvent utilisée dans les GUI c'est de faire de ton listener une classe interne. De cette façon, elle a accès aux champs de la classe englobante :  
 

Code :
  1. class MaClasse {
  2.    String choix; //variable globale  
  3.    JMenuItem menuChoix1 = new JMenuItem("Choix1" );
  4.    menuChoix1.addActionListener( new EcouteurChoixMenu("choix1" ) );
  5.   // on peut en mettre plusieurs comme ça :   
  6.   JMenuItem menuChoix2 ... 
  7.   menuChoix2.addActionListener ...
  8. }
  9. //et j'ai une classe d'écouteur :  
  10. class EcouteurChoixMenu implements ActionListener {
  11.  
  12.    String choixRécupéré;
  13.    EcouteurChoixMenu(String choixEnvoyé) {
  14.       choixRécupéré = choixEnvoyé;
  15.    }
  16.    public void actionPerformed(ActionEvent e) {
  17.       // ici tu as accès à choix de la classe MaClasse
  18.       choix = choixRécupéré;
  19.    }
  20. }


 
Une autre solution était de passer l'instance de MaClasse en paramêtre des EcouteurChoixMenu, pour qu'ils puissent demander à MaClasse de mettre à choir sa variable choix


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-11-2003 à 01:25:20    

Yaisse ! je n'avais pas pensé à faire une classe interne à la classe Maclasse
la variable memoire est ainsi atteignable et c'est le bonheur !
merki ;)


---------------
dieu créa l'homme et meuh fit la vache
Reply

Marsh Posté le 02-11-2003 à 14:38:20    

il passent les accents aigue a la compilation ?

Reply

Marsh Posté le 02-11-2003 à 14:53:50    

veryfree a écrit :

il passent les accents aigue a la compilation ?


j'avais pas vu :)
non, je pense pas que ca passe ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-11-2003 à 15:13:20    

je viens d'essayé en fait et ca semble pas poser de probleme

Reply

Marsh Posté le 02-11-2003 à 15:14:58    

je crains de dire une grosse connerie, mais il compile pas en unicode le javac ?

Reply

Marsh Posté le 02-11-2003 à 15:36:11    

si si, unicode, vu que les caracteres japonais passent aussi a la compile :jap: :D


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
Reply

Marsh Posté le 02-11-2003 à 15:39:35    

oui ça passe :D
j'adore appeler mes objets de testcases avec des noms à la cons accentués :D

Reply

Marsh Posté le 02-11-2003 à 15:40:05    

benou a écrit :


j'avais pas vu :)
non, je pense pas que ca passe ...

[:forummp3]
 
 
gros noob :o

Reply

Marsh Posté le 02-11-2003 à 15:40:05   

Reply

Marsh Posté le 02-11-2003 à 15:41:11    

qu il est meprisant ce smiley  
 
pire que sarcastique encore :D

Reply

Marsh Posté le 02-11-2003 à 15:43:33    

souk a écrit :

si si, unicode, vu que les caracteres japonais passent aussi a la compile :jap: :D


 
:sol:
 
Benou, si t'as besoin de cours de java ou juste une question, t'hesites pas a demander hein ? :sol:

Reply

Marsh Posté le 02-11-2003 à 15:51:41    

[:rofl]

Reply

Marsh Posté le 02-11-2003 à 16:00:44    

ya aussi les caracteres russes et grecs qui passent ... :p
 
nan plus sérieux, c'était du mode code oversimplifié, donc explicitagementation au maximum pour que ça soit le plus compréhensible possible ... quand meme !... :D


---------------
dieu créa l'homme et meuh fit la vache
Reply

Marsh Posté le 02-11-2003 à 17:49:53    

je savais que le compilo supportais les caractères unicodes (y a souvent des accents dans les chaines de caractères) mais je pensais pas que c'était autorisé pour les noms de variable ...
 
J'imagine l'horreur avec des sources japonais [:ddr555]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-11-2003 à 17:52:04    

chrisbk a écrit :

Benou, si t'as besoin de cours de java ou juste une question, t'hesites pas a demander hein ? :sol:


 [:netbios]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-11-2003 à 18:43:18    

benou a écrit :

je savais que le compilo supportais les caractères unicodes (y a souvent des accents dans les chaines de caractères) mais je pensais pas que c'était autorisé pour les noms de variable ...
 
J'imagine l'horreur avec des sources japonais [:ddr555]


 
je pourrai vous en poster si vous insistez :D


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
Reply

Marsh Posté le 02-11-2003 à 19:12:29    

souk a écrit :


 
je pourrai vous en poster si vous insistez :D


et comment ce servir d'un code écrit avec des carctères de ce style à l'étrangé ? [:mlc]


Message édité par benou le 02-11-2003 à 19:12:36

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-11-2003 à 19:26:47    

[:spamafote] ben....  je pense qu'ils le reutilisent pas a l'etranger en fait :D


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
Reply

Marsh Posté le 02-11-2003 à 19:31:13    

moi j'ai eu a travaillé sur du code crée par un coreen, lorsque j ai fait un add sur un cvs , il voulait absolument que je le foute en binaire (alors que c etait du texte)
 
enfin le gard utilisait des variables en anglais heureusement :D
 
c'est juste la javadoc qui etait illisible...
 


 /**
  * buddyListModified À̺¥Æ® ¼ö½ÅãÁ, syncAllUsers ¸Þ¼Òµå¸¦ È£ÃâÇÏÁö ¾ÊÀ»
  * Ƚ¼ö¸¦ ÀúÀåÇÑ´Ù. ±âº»°ªµµ 0 ÀÌ°í, º¸Åë ÇÊ¿äÇÒ °æ¿ì 1À» ´ëÀÔÇÏÁö¸¸,
  * 2-3°³ÀÇ ¸Þ½ÃÁö¸¦ µ¿½Ã¿¡ º¸³¾¶§´Â 2³ª 3À» ´ëÀÔÇϸé È¿°úÀûÀÌ´Ù.
  */


Message édité par veryfree le 02-11-2003 à 19:32:02
Reply

Marsh Posté le 02-11-2003 à 22:43:35    

Question, dans le cas où l'on décide de faire du listener une classe interne de l'interface graphique, vous préférez :
- une classe pour l'ensemble, avec un actionPerformed structuré en if else,
- n classes, une pour chaque composant, de sorte que chacun à son actionPerformed à lui.


---------------
Le site de ma maman
Reply

Marsh Posté le 02-11-2003 à 22:49:43    

2e solution
 
avec une preference pour des listeners reutilisés et pas une classe à la con de 3 ligne pour chaque foutu bouton


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-11-2003 à 23:05:17    

pareil : 2e.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-11-2003 à 23:11:12    

mais par exemple, si j'avais un groupe de qques boutons qui sont en relation, je pourrais bien vivre avec le fait d'avoir un seul listener et un pti if dedans, à voir


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-11-2003 à 23:25:21    

OK. Merci.


---------------
Le site de ma maman
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed