~ / TIS3 / AL / tps / 1-statemachine /

Machine à états avec Java/Swing

© 2007—2015 - Renaud Blanch

Le but de ce TP est d'apprendre à programmer une interaction en utilisant des machines à états avec la boîte à outils Swing de Java. Vous allez réaliser l'interaction pour un visualisateur du graphe d'une fonction.

Squelette d'application

Récupérez les sources du squelette de l'application. Celles-ci fournissent dans le répertoire graphser/src/packages : grapher.fc et grapher.ui (respectivement le noyau fonctionnel et l'interface graphique de notre programme). Explorez le code pour comprendre ce qu'il fait.

Créez un nouveau projet nommé Grapher à partir de ces sources (New Java Project with Existing Sources) en ajoutant le répertoire téléchargé grapher/src à ce projet. Exécutez la classe principale grapher.ui.Main de ce projet pour vérifier que le code fonctionne bien.

Interaction graphique

Il s'agit de créer une classe Interaction dans le paquet grapher.ui qui permettra l'interaction à la souris avec le graphique (voir les interfaces des Listeners proposées par MouseListener et MouseMotionListener réunies en MouseInputListener ; et MouseWheelListener).

Faites en sorte que le drag, bouton gauche enfoncé, permette de déplacer le repère (en appelant la méthode translate(int dx, int dY) de la classe Grapher).

Changez le curseur (en appelant la méthode setCursor héritée par la classe Grapher) pour qu'il se transforme en une petite main à la place du curseur par défaut pendant le déplacement (voir la classe Cursor).

Ajoutez le support au clic gauche qui doit permettre de zoomer de 5%, centré sur le curseur (en appelant la méthode de la classe Grapher zoom(Point center, int dz) avec 5 pour valeur de dz).

Faites de même pour le clic droit qui doit permettre de dézoomer de 5%, centré sur le curseur (en appelant la méthode zoom(Point center, int dz) avec -5 pour valeur de dz).

Ajoutez enfin le support de la molette qui doit permettre de zoomer ou dézoomer, centré sur le curseur.

Bonus

Ajoutez le support au drag, bouton droit enfoncé, qui doit permettre de sélectionner une zone rectangulaire, marquée par un rectangle pointillé, pour zoomer sur cette sélection lorsque le bouton est relâché.

mise à jour : 9 mars 2015