[Conception] Tester quel bouton a effectué l'action
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 ?
Re: tester quel bouton a effectuer l'action
Citation:
Envoyé par Cyborg289
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 .......
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 .
Re: tester quel bouton a effectuer l'action
Citation:
Envoyé par Cyborg289
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 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).
Par exemple :
Code:
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:
...
}
}
} |
Si tu es en Java 1.5 tu peux utiliser un EnumSet à la place de la HashMap.