Travaux Pratiques Interfaces Graphiques Master 1

TP4, gestion des événements



But du TP

L'objectif est de réaliser un mini logiciel de dessin afin d'illustrer la gestion d'événements.

La première partie consiste à construire un composant permettant de créer et visualiser des couleurs selon le modèle RGB.
La deuxième partie consiste à construire un composant Ardoise sur lequel on peut dessiner des courbes, en utilisant le curseur de la souris comme pinceau. On utilisera le composant de sélection de couleur, défini dans la première partie, pour modifier les couleurs du fond et du pinceau du composant Ardoise.


Visualisation des couleurs

Ecrire une classe CouleurRGB permettant de créer et visualiser des couleurs selon le modèle RGB (Red, Green, Blue). Une couleur dans le modèle RGB est définie par la composition de trois entiers compris entre 0 et 255 , représentant  respectivement les intensités des couleurs rouge, vert et bleu.

Le composant graphique CouleurRGB sera défini comme un JPanel afin d'être intégré à d'autres composants graphiques. Il est formé de trois barres de défilement faisant varier l'intensité des trois couleurs de base, rouge, vert et bleu. Les valeurs des couleurs sont affichées dans des champs de saisie texte. La modification de la valeur d'intensité dans un de ces champs ajustera la position  de la barre de défilement correspondante. A tout moment, la couleur spécifiée est visualisée sur un panneau de test.

Quelques indications pour la construction de la classe CouleurRGB.

1) CouleurRGB est un JPanel, contenant trois barres de défilement JScrollBar et trois champs de saisie texte JTextField. Les barres de défilements sont graduées de 0 à 256, initialisées à 0 et admettent un pas d'une unité.

2) On peut choisir une stratégie GridLayout pour les panneaux composés de JScrollBar et JTextField, ainsi qu'une stratégie BorderLayout pour l'agencement du panneau général CouleurRGB.

3) Le changement de la valeur de l'intensité d'une des trois couleurs se répercute sur la position de la barre de défilement, sur la valeur dans le champ texte ainsi que sur la couleur du panneau test.

3.1) On pourra pour cela, déclarer trois attributs r, v, b entiers de la classe CouleurRGB, et écrire des méthodes mAjRouge (int r), mAjVert(int v), mAjBleu(int b) mettant à jour l'état de tous les composants en fonction de la valeur de la couleur.

3.2) Définir des auditeurs CouleurListener et CouleurNumListener aux composants JScrollBar et JTextField, mettant à jour les valeurs des couleurs courantes, en fonction des déplacements des curseurs des barres de défilement et des saisies des champs texte.


Un micro dessinateur

Ecrire une application Ardoise.java affichant une fenêtre contenant un panneau de fond blanc sur lequel le déplacement du curseur de la souris provoque un tracé de points lorque un bouton de la souris est pressé. Un mouvement continu de la souris permet de tracer une courbe continue. Les coordonnées du curseur de la souris sont, à tout moment, affichés dans une barre d'état. La fenêtre principale contient un menu dont les entrées permettent d'effacer l'ardoise et de quitter l'application.

[Pour ceux qui ont fini]
Intégrer deux panneaux CouleurRGB à l'application Ardoise.java permettant respectivement de modifier la couleur du fond de l'ardoise et du tracé de la souris, en utilisant les barres de défilement.

Quelques indications pour la construction de la classe Ardoise.java :

1) Ecrire une classe FenetreArdoise qui définit une fenêtre JFrame contenant le panneau de dessin JPanel, la barre de position du curseur JLabel ainsi que les panneaux CouleurRGB. On pourra choisir une stratégie de position BorderLayout pour l'agencement de ces composants dans la fenêtre.

2) La barre de menu est initialisée en invoquant une méthode creerMenu(), réalisant la construction de la barre de menu. Pour la gestion des évènements associés aux entrées du menu, utiliser des classes incluses anonymes.

2) Ecrire deux classes anonymes CoordonneesListener et TraceListener définissant les auditeurs permettant respectivement de réaliser le tracé de points et de mettre à jour la barre d'états. On pourra utiliser les adapters, comme classe d'implémentation des listeners choisis.