C. Recanati
InHM Java
MI1, 2012
TP 10
1) Reprendre d’abord l’exercice 2 de la feuille 9 (applet sur une
JList) si vous ne l’avez pas fait.
2) On va maintenant transformer le programme Sketcher pour en
faire un logiciel de dessin. On va dessiner dans la fenêtre au lieu
d’imprimer des infos sur les événements se produisant sur les
menus. Le JTextArea va donc être remplacé par un JPanel qui
captera les clics de souris, et permettra de dessiner interactivement.
A. Pour réaliser le logiciel, on va implémenter l’architecture
Modèle/Vue introduite en cours, en définissant les deux classes
SketcherView et SketcherModel (cf. poly).
Un modèle de feuille de dessin sera défini par la classe
SketcherModel comme une liste d’éléments (des formes
colorées). La vue SketcherView (un JPanel étendu) gèrera
l’affichage du modèle mais aussi l’interaction de l’utilisateur avec le
logiciel. On va implanter dans SketcherView la création d’un
nouvel élément (temporaire du point de vue interactif), et son ajout
au modèle à la fin de l’interaction de l’utilisateur avec la souris.
Cette « vue » (un JPanel) sera insérée dans le panneau de contenu
du cadre de l’application, comme indiqué dans le poly.
B. Avant d’implanter la partie interactive de l’application
permettant d’introduire un élément de dessin, on va définir la classe
abstraite Element qui définit les différentes formes d’éléments
d’une feuille de dessin.
Pour définir un élément, on a besoin de deux champs : une forme
(basée sur l’interface Shape de javax.swing) et une couleur. On va
ici définir une classe abstraite Element, avec des sous-classes
internes statiques qui implémentent cette classe abstraite (une sous-
classe Ligne, une sous-classe Rectangle, etc.). Ces sous-classes
d’éléments (Ligne, Rectangle, etc.) - seront donc définies dans la
classe abstraite Element comme classes internes, et accessibles dans