Académique Documents
Professionnel Documents
Culture Documents
Programmez intelligent
les Cahiers
E. Puybaret
avec
les Cahiers du
du
Programmeur Programmeur
Swing
Emmanuel Puybaret est
ingénieur en informatique et aéro-
nautique et a plus de douze ans
d’expérience en programmation
Ce cahier montre aux développeurs Java comment exploiter la très riche
objet multi-plate-forme dans
bibliothèque standard Swing à travers la création d’une application
des domaines aussi variés que
graphique 3D ergonomique et fiable.
l’industrie, les télécoms et la
banque. Consultant indépendant
Cet ouvrage décrit la création d’un logiciel libre d’aménagement d’intérieur
développé avec Java 5 et Swing, de sa conception UML jusqu’à sa distribution,
partagé entre développements et Java SE 5 • AWT/Swing • Java 3D • Java Web Start
formations, il a créé en 1998 le
en passant par l’utilisation d’Eclipse, dont les astuces de productivité sont
dévoilées. Le développeur y découvrira comment exploiter efficacement les
site eteks.com entièrement SWT/JFace • JUnit • Abbot • Eclipse • CVS • UML • MVC • XP
consacré à Java.
nombreuses fonctionnalités de Swing : création d’arbres, de tableaux et de
boîtes de dialogue, dessin dans un composant graphique, glisser-déposer,
gestion d’opérations annulables, intégration d’un composant 3D... Emmanuel Puybaret
L’étude de cas de cet ouvrage a été testée sous Windows, Linux et Mac OS X !
Sommaire
Présentation de l’étude de cas • Sweet Home 3D, une application d’agencement des meubles
dans un logement • Méthodologie eXtreme Programming • Mise en place de l’environne-
ment de développement • Java SE 5 • Eclipse • CVS • SourceForge.net • Choix techniques :
Swing ou SWT ? • Architecture d’AWT, Swing et SWT • Composants, layouts et listeners •
JFace • Maquettes Swing et SWT de l’étude de cas avec Visual Editor • Arbre du catalogue
ISBN 13 : 978-2-212-12019-6
Java
des meubles • Scénario de test • Architecture à trois couches • Test JUnit • Classe JTree
Code éditeur : G12019
ISBN : 2-212-12019-2
9 7 8 2 2 1 2 1 2 01 9 6
• Modèle d’arbre • Localisation • Renderer • Chargement des images avec un exécuteur mul-
tithread • Tableau des meubles du logement • Classe JTable • Modèle de tableau • Modi-
fication du tableau avec MVC • Architecture Modèle/Vue/Contrôleur • Design patterns •
Gestion de la sélection • Actions annulables • Gestionnaire d’opérations annulables • Action
• Menus et barre d’outils • Refactoring avec la réflexion • Composant graphique du plan •
Test graphique Abbot • Sous-classer JComponent • Dessiner avec Java 2D • Gestion de la
souris et du clavier • Diagramme d’états-transitions • Vue 3D du logement • Java 3D • Arbre © Groupe Eyrolles 2006,
ISBN : 2-212-12019-2
d’une scène 3D • Transformations 3D • Chargement de modèles • Éclairage • Interaction
ISBN 13:
avec la souris • Enregistrement et lecture d’un logement • Sérialisation • Choix d’un fichier 39 € 978-2-212-12019-6
• Boîtes de dialogue standards • Fenêtre principale • Intégration dans Mac OS X • Glisser-
déposer et copier-coller • Mise en œuvre de la classe TransferHandler • Gestion du focus •
Édition des préférences utilisateur • Disposition des composants • GridBagLayout • Classe
Preferences • Déploiement et installation avec Java Web Start.
Table des matières
Architecture des classes du scénario • 247 Méthodes et classes internes d’outils • 299
Concept de mur • 247 Calcul du magnétisme • 301
Gestion des extrémités des murs • 247 Implémentation de l’état Sélection • 303
Composant graphique du plan • 248 Implémentation de l’état Création de mur • 304
Modification des préférences utilisateurs • 250 Implémentation de l’état Sélection d’un mur et
Diagramme UML des classes du scénario • 250 déplacement • 305
Programme de test graphique du composant du plan • 252 Implémentation des autres états • 306
Abbot • 252 Optimisation du composant du plan • 307
Test JUnit/Abbot du scénario n° 5 • 254 Scénario n° 6 • 309
Création de la fenêtre de test • 255 Modification du mode de sélection dans le plan • 309
Test du composant du plan • 257 Position et orientation d’un meuble • 310
Méthodes de vérification des murs et de la sélection • 260 Composant graphique du plan du logement • 311
Gestion des murs dans la couche métier • 261 Intégration du composant du plan dans la vue de
Modification des préférences de l’utilisateur • 261 l’application • 312
Classe représentant un mur • 261 Résultat du scénario n° 6 • 313
Interface du listener des murs et classe d’événement associée • 262 En résumé… • 313
Gestion des murs du logement • 263
Création du composant du plan • 266 9. VUE 3D DU LOGEMENT ...................................... 315
Dessin du composant • 267 Scénario n° 7 • 316
Java 2D • 268 Spécifications de la vue 3D du logement • 316
Forme dessinée • 268 Java 3D • 317
Type de trait • 270 Installation • 317
Dessin des murs avec des lignes • 270 Ajout des bibliothèques Java 3D dans Eclipse • 318
Application de test du composant du plan • 273 Test de Java 3D • 318
Dessin du contour de chaque mur • 274 Repère 3D • 320
Motif de remplissage • 278 Transformation 3D • 320
Motif appliqué aux murs • 278 Arbre d’une scène 3D • 321
Dessin de la grille, des murs sélectionnés et du rectangle de Objets 3D • 322
sélection • 280 Construction d’une forme 3D • 323
Dessin de la grille • 280 Lecture d’un modèle 3D • 325
Contour des murs sélectionnés • 282 Éclairage d’une scène 3D • 327
Gestion du rectangle de sélection • 283 Interaction sur une scène 3D • 329
Suivi des notifications de la couche métier • 285 Capacité d’un nœud • 330
Gestion de la zone visible du composant • 286 Orientation d’une forme avec la souris • 331
Positionnement des listeners AWT et des actions du Arbre de la scène 3D du logement • 332
clavier • 288 Diagramme UML des classes du scénario • 334
Listener de la souris • 288 Gestion de la hauteur des murs du logement • 335
Listener du focus • 289 Ajout de la vue 3D dans la vue du logement • 337
Gestion des entrées clavier • 289 Implémentation du composant 3D • 338
Installation des listeners et des entrées clavier • 292 Création des nœuds du comportement, du fond d’écran et des
Modification du curseur • 292 lumières • 340
Méthodes de détection des murs • 293 Création du sous-arbre du logement • 342
Implémentation du contrôleur du composant du plan • 294 Branches des murs • 345
Diagramme d’états-transitions du contrôleur • 295 Branches des meubles • 348
Implémentation du diagramme d’états-transitions • 296 Test de la vue 3D du logement • 351
Application du pattern état dans la classe du contrôleur • 297 Optimisation du chargement des modèles 3D • 352
Programmation des sous-classes d’état • 299 En résumé… • 355