Programmation Java 1A - TP22
Interfaces graphiques

Calculatrice

Le but de ce TP et du suivant est de programmer une calculatrice simple (offrant seulement les 4 opérations de base).

Nous allons écrire la calculatrice en quatre étapes (vérifiez bien que chaque étape fonctionne avant de passer à la suivante !) : tout d'abord l'affichage des boutons à l'écran, puis l'ajout d'un écouteur à chaque bouton, puis dans le prochain TP les clics sur les chiffres qui permettent de saisir un nombre correctement, et enfin les clics sur les opérateurs.

Remarque : bien que ce programme soit graphique, vous pouvez utiliser la méthode System.out.println pour afficher dans le terminal des indications sur le déroulement du programme : cela sera utile par exemple pour vérifier que les nombres que vous saisissez avec les touches de la calculatrice sont stockés comme il faut dans les variables...

1. Les touches (attributs et constructeur de la classe Calculatrice)

    La calculatrice contient un affichage, et des boutons.

    Ecrire une classe Calculatrice étendant la classe Panel afin d'obtenir l'affichage ci-contre.

    Vous pouvez utiliser un tableau de boutons pour stocker les touches de chiffres, cela vous permet d'initialiser rapidement (avec une boucle) chacun de ces boutons.
    Tous les boutons seront placés dans un Panel nommé touches, afin de pouvoir obtenir la disposition que l'on souhaite (GridLayout de 4 sur 4).

    Il faut également un champ de texte pour l'affichage des nombres, nommé affichage.

    Pour la disposition du champ de texte et du panel touches dans la fenêtre principale, vous utiliserez un BorderLayout avec le champ de texte au nord et les touches au centre.

    Ecrire la méthode main dans laquelle vous créerez une fenêtre ; dans cette fenêtre vous placerez un objet de type Calculatrice.

   Remarque : voici le code qui permet qu'une fenêtre se ferme lorsqu'on appuie sur la petite croix dans la barre de titre. Ce code ajoute un écouteur de fenêtre à l'objet f, cet écouteur est de type WindowAdapter et indique que lorsqu'un message de fermeture de fenêtre arrive (c'est-à-dire lorsqu'on clique sur la croix) il faut faire disparaître la fenêtre et arrêter le programme.

Frame f;
f.addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent e) { // lorsqu'on ferme la fenêtre
e.getWindow().dispose(); // on fait disparaître la fenêtre
System.exit(0); // on arrête le programme
}
});

2. L'écouteur

    A chaque bouton doit être associé un écouteur : écrire une classe CalculatriceEcouteur et compléter la classe Calculatrice.

    Maintenant, que doit-il se passer lorsqu'on appuie sur l'un des boutons ? Cela dépend si c'est l'un des 5 opérateurs, ou alors un chiffre ou le point décimal...
    Ecrire la fonction actionPerformed qui suivant le cas fera appel à l'une des deux fonctions que nous verrons dans le prochain TP : traiterSaisieNombre() ou traiterClicSurOperateur().
    Pour le moment, contentez-vous dans chacune des deux méthodes de traitement d'afficher dans le terminal le nom du bouton sur lequel on a cliqué.