Interfaces graphiques (suite) |
Calculatrice (suite)
Vérifiez que les deux étapes du TP
précédent
fonctionnent correctement : affichage de la calculatrice, et
fonctionnement
des boutons avec affichage de chaque label dans le TextField.
Il nous reste à écrire les deux dernières étapes (vérifiez bien que chaque étape fonctionne avant de passer à la suivante !) : après l'affichage des boutons à l'écran et l'ajout d'un écouteur à chaque bouton, il faut maintenant gérer les clics sur les chiffres qui permettent de saisir un nombre correctement, et les clics sur les opérateurs.
Remarque :
Vous pouvez savoir quel bouton a été
cliqué grâce à la ligne : Button b =
(Button)(e.getSource()); puis tester par exemple si b==bouton_plus
(où bouton_plus est le nom du bouton correspondant
à la touche + que vous aurez déclaré
en attribut).
1. Le traitement des chiffres
Pour que la calculatrice fonctionne, il
faut
qu'elle sache saisir des nombres à plusieurs chiffres, et avec
au plus un point décimal !
Ecrire la fonction void
traiterSaisieNombre(String leLabel) qui prend en argument une
chaîne représentant l'intitulé d'un bouton (soit un
chiffre, soit le point décimal).
Pour écrire cette fonction, vous pourrez
déclarer en attribut de la classe Calculatrice un
booléen
debut qui sera vrai lorsqu'on est au début de la saisie
d'un nombre (on saisit le premier chiffre) et faux lorsqu'on a
déjà
saisi au moins un chiffre, ainsi qu'un booléen decimal
qui
sera vrai dès qu'on a saisi un point décimal dans un
nombre.
2. Le traitement des opérateurs
Ecrire la fonction void traiterClicSurOperateur(String leLabel) qui gère les clics sur l'un des 5 opérateurs.
Pour cette fonction, vous aurez besoin
d'un
attribut dernierOperateur de type String dans la classe
Calculatrice, indiquant le label de l'avant-dernier
opérateur saisi (celui qui avait été traité
lors du passage précédent par cette fonction).
Vous aurez également besoin d'un attribut premierArgument
de type double (le deuxième argument n'a pas besoin
d'être en attribut : ce sera une variable locale à la
fonction traiterClicSurOperateur).
Ainsi, si ce dernier opérateur
était =,
ça signifie que depuis on a saisi un nouveau nombre, qui doit
servir de premier argument à une nouvelle opération.
Si le dernier opérateur était l'une
des quatre opérations, cela signifie que depuis on a saisi le
deuxième argument, et qu'il faut maintenant effectuer
l'opération et afficher le résultat.