Programmation Java 1A - TP23
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.

    Pour cette fonction, vous pourrez utiliser les méthodes Double.parseDouble(String) et Double.toString(double) qui permettent de convertir respectivement une chaîne en nombre et un nombre en chaîne.