Calculatrice Java Swing
Refonte graphique d'une calculatrice console rendue en cours, faite en autonomie pour apprendre Swing.
Contexte
Reprise d'un projet déjà rendu en cours de BTS SIO SLAM (calculatrice en mode console). Refonte en application graphique Java dans le cadre de mon apprentissage en autonomie du Java desktop.
Les deux versions figurent dans ma synthèse E4 :
• la version console pour maîtriser les bases du langage (lecture / écriture en flux standard, types numériques, structures de contrôle)
• la version graphique pour évoluer vers une interface utilisateur cliquable et apprendre la gestion d'événements.
Objectif
Convertir la calculatrice console en application graphique fonctionnelle, en restant simple et lisible pour un projet pédagogique :
• une interface 4x4 boutons (chiffres, opérations, égal, effacer)
• des calculs en chaîne sans devoir appuyer systématiquement sur "="
• une gestion propre de la division par zéro (l'écran affiche "ERREUR" sans planter l'application)
• un code en un seul fichier facile à reprendre par un correcteur ou un autre étudiant
Démarche
Application sur un seul fichier, organisée autour d'une classe principale qui hérite de la fenêtre Swing standard et qui implémente l'interface d'écoute des événements de clic. C'est elle qui reçoit l'événement quand l'utilisateur appuie sur un bouton et qui décide quoi en faire. L'affichage est divisé entre une zone de résultat en haut et une grille de boutons en dessous.
L'état du calcul est suivi par trois informations en mémoire : le nombre en cours, l'opération en attente, et un indicateur qui dit s'il faut afficher le chiffre tapé à la suite du précédent ou recommencer un nouveau nombre.
La division par zéro est gérée à part : quand le calcul provoque une erreur, l'écran affiche "ERREUR" au lieu de planter, et l'utilisateur peut appuyer sur "effacer" pour repartir.
Bilan
Améliorations futures envisagées :
• Remplacer le grand `if (source == bouton...)` du actionPerformed par un `switch` sur la source pour un code plus lisible
• Ajouter le bouton `.` pour saisir des nombres décimaux
• Ajouter les opérations modulo (`%`) et racine carrée
• Gérer la saisie au clavier via un `KeyListener` (taper directement les chiffres et opérateurs)