j'ai créé une classe qui permet de gérer les actions des différents boutons. Le problème c que je dois tester le Actionevent.getactioncommand() dans un switch et que le switch n'accepte pas les type string. Quelle autre solution s'offre a moi ?
j'ai créé une classe qui permet de gérer les actions des différents boutons. Le problème c que je dois tester le Actionevent.getactioncommand() dans un switch et que le switch n'accepte pas les type string. Quelle autre solution s'offre a moi ?
une serie de if .......Envoyé par Cyborg289
ou alors si tu tiens absolument a utiliser un switch, tu fais afficher des numeros sur le bouton au lieu du texte. et le texte que tu recuperes tu fais un parseInt dessus et ca sera un entier ... mais bon ... c'est pas élégant .
si tu utilises la 1.5 n'y a-t-il pas les énumérations qui permettent de faire des switch sur des strings ?
dites moi si je me trompe.
essaye un truc du genre:
Difficile d'avoir 2 fois le meme résultats de hashcode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 switch(e.getSource().hashCode()){ case boutton1.hashCode(): break; case boutton2.hashCode(): break; }
tu te trompesEnvoyé par cootchy
les branches case d'un switch ne supportent que des valeurs discrètes (types primitifs boolean, char, byte, short, int, long).
FauxEnvoyé par bakonu
les valeurs après un case doivent être des constantes et non des expressions.
Une solution possible mais qui ne présente pas forcément un grand intérêt est d'avoir une HashMap avec comme clé la valeur du ActionCommand et comme valeur un entier (ou tout autre type primitif à valeurs discrètes).Envoyé par Cyborg289
Par exemple :
Si tu es en Java 1.5 tu peux utiliser un EnumSet à la place de la HashMap.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 static HashMap actionCommandMap = new HashMap(); private final static int ACTION_OPEN = 1; private final static int ACTION_CLOSE = 2; private final static int ACTION_QUIT = 3; static { actionCommandMap.put("Ouvrir", new Integer(ACTION_OPEN)); actionCommandMap.put("Fermer", new Integer(ACTION_CLOSE)); actionCommandMap.put("Quitter", new Integer(ACTION_QUIT)); } void doActionCommand(String actionCommand) { Integer numAction = (Integer) actionCommandMap.get(actionCommand); if (numAction != null) { switch (numAction.intValue()) { case ACTION_OPEN: ... case ACTION_CLOSE: ... case ACTION_QUIT: ... } } }
Partager