Sujet du TP : JDraw

L'objectif de ce TP est la réalisation d'une petite application de dessin : JDraw.

Au final, l'application permettra à l'utilisateur de créer des objets graphiques (points, segments, ovales, rectangles, zone de textes, ...), d'en modifier leur emplacement et propriétés par le biais de boîtes de dialogue et de sauvegarder puis relire dans un fichier les dessins créés.

Voici l'applet dont vous allez vous inspirer, l'interface étant des plus simples : le bouton gauche de la souris permet de déplacer les objets, un click droit fait apparaître une fenêtre de propriétés. Nous verrons plus tard comment ajouter des objets, etc.

                     No JDK 1.2 support for APPLET!!

Plan de travail

Arborescence des packages

jdraw Le package principal
jdraw.graphicalobjects Le package des objets graphiques (points, rectangles, ellipses, segments, blocs de texte, ...)
jdraw.images Le package contenant les images
jdraw.ui Le package contenant les composants de l'interface graphique

Classes

jdraw.JDraw La classe principale, qui à la fois exporte une méthode statique main et étend javax.swing.JApplet
jdraw.GraphicalObjectManager L'objet maintenant la liste des objets graphiques, indiquant l'objet le plus proche d'un point spécifié, ...
jdraw.graphicalobjects.GraphicalObject La classe mère des objets graphiques du package ayant une position et une couleur
jdraw.graphicalobjects.Point La classe d'objet graphique Point
jdraw.graphicalobjects.TextArea La classe d'objet graphique Texte
jdraw.graphicalobjects.SizedGraphicalObject La classe mère des objets graphiques du package ayant une position, une couleure et une taille
jdraw.graphicalobjects.Ellipse La classe d'objet graphique Ellipse
jdraw.graphicalobjects.Rectangle La classe d'objet graphique Rectangle
jdraw.graphicalobjects.Segment La classe d'objet graphique Segment
jdraw.ui.MainFrame La fenêtre principale de l'application
jdraw.ui.GraphicalObjectCanvas Le composant qui affiche les objets graphiques et transmet les actions de l'utilisateur (click-droit, drag &drop, ...) au GraphicalObjectManager.
jdraw.ui.GraphicalObjectProperties La fenêtre d'édition des propriétés des objets graphiques simples (position et couleur), et classe mère des autres fenêtres de propriétés.
jdraw.ui.SizedGraphicalObjectProperties La fenêtre d'édition des propriétés des objets graphiques ayant un taille (en plus de la position et de la couleur).
jdraw.ui.TextAreaProperties La fenêtre d'édition des propriétés des objets texte (position, couleur + texte et fonte).

Visualiser le diagramme de classe (2540*1340, 245Ko)Links to a picture.

Propriétés des objets graphiques

Méthodes des objets graphiques

Evénements des objets graphiques

Pour informer les composants intéressés (les listeners) d'événements émis par les objets graphiques, nous utiliserons la classe d'événements java.beans.PropertyChangeEvent, et les listeners seront de type java.beans.PropertyChangeListener.
Dans une première approche, les objets graphiques n'émettrons que des changements de la propriété (en lecture-seule) "BoundingBox", qui doit déclencher un réaffichage adéquat.

Principes de mise en œuvre des fenêtres de propriétés

Il y a trois fenêtres de propriétés différentes :

L'objectif est que chaque fenêtre ne fasse qu'ajouter ses composants à la fenêtre qu'elle étend, et que les fenêtres soient réutilisables (il ne doit pas être nécessaire de les recréer à chaque utilisation) :

Utilisation en application ou en applet

Voici deux notes pour que JDraw puisse fonctionner à la fois comme une application directement exécutable ou comme une applet dans une page web :



Dernière mise à jour : 02/04/2009 à 23:00