TP Java sur les interfaces graphiques

Richard Grin (grin@unice.fr) Retour TPs


But de ce TP :

Programmer une interface graphique ; le look (le feel pour le prochain TP)

Tout au long de ce TP, des liens "infos sur..." vous renverrons vers les pages du tutoriel Java de Sun. Vous pourrez ainsi compléter les informations données dans le cours et copier des lignes de code pour vous faciliter la tâche.

Si vous savez comment ça fonctionne (c'est-à-dire, si vous avez eu un cours dessus ;-)), entraînez-vous à utiliser un gestionnaire de version (RCS, CVS ou autre) pour ce tp (menu Tools/Version Control d'emacs)

Voici une classe Livre donnée dans un fichier JAR (utilisez ce fichier JAR et pas la classe Livre.class) avec sa documentation. Par rapport à la classe Livre utilisée dans les TP précédents, on a ajouté un résumé du livre et un numéro ISBN. De plus, cette classe contient des méthodes de classe pour rechercher le livre d'un auteur et ensuite les autres livres du même auteur.
Voici une classe Application qui crée des livres et utilise une classe GUILivre comme interface graphique.
Voici un squelette pour le fichier GUILivre.java. Pour l'instant, cette classe ne fait rien qu'afficher une interface graphique. Vous allez modifier et compléter ce fichier petit à petit pour répondre aux questions des différents exercices de ce TP.

Cette interface graphique va permettre d'entrer, afficher, corriger les résumés des livres.


Compléter le code

Pour le moment on ne s'intéresse qu'au look de la fenêtre (on verra le feel dans les questions suivantes). Si vous lancez l'exécution de l'application, une fenêtre va s'afficher qui ressemble à cette image :

Etudiez le code de la classe GUILivre.java et modifiez-le pour avoir la présentation ci-dessous :

Modifiez-le à nouveau pour avoir la présentation ci-dessous, mieux adaptée à la recherche des livres d'un auteur donné :


On change le look

Ajoutez un bouton "Suivant" à droite du bouton "Chercher". Ce bouton Suivant permettra de rechercher le livre suivant de l'auteur dont le nom est affiché (pour l'instant il ne fait rien).
Ajoutez une bulle d'aide sur les boutons "Suivant" et "Chercher" pour indiquer l'action qu'ils lanceront (infos sur bulles).


Onglets et gestionnaires de placement

Ajoutez 2 onglets (infos sur les onglets). Le premier onglet donne accès à l'écran de la question 1 et le deuxième onglet donne accès à un écran qui affiche le numéro ISBN, le titre, l'auteur et le nombre de pages du livre.

Comme le constructeur de la fenêtre commence à comporter un grand nombre de lignes, vous pouvez le rendre un peu plus modulaire en introduisant des méthodes privées du type makeOngletRecherche() qui renvoie un composant qui représente un des onglets.

Voici l'aspect que devra avoir exactement ce 2ème écran. En particulier vous choisirez soigneusement les gestionnaires de mise en place (layout managers) pour avoir le même comportement quand l'utilisateur élargira la fenêtre (infos sur les layout managers). Si vous avez des problèmes pour reproduire les images suivantes (vous devriez en avoir ;-) ), vous pouvez consulter cet article détaillé sur les layout managers ; allez voir en particulier la section "A Very Common Layout Need" ; une solution est donnée à la fin de la section suivante "Allowing the labels and text fields to stretch".

Aspect 1 :

Aspect 2, après avoir redimensionné la fenêtre :

Pour l'instant, on vous demande seulement de prévoir les composants graphiques qui accueilleront ces informations. On ne vous demande pas de pouvoir déclencher les actions qui rempliront ces composants avec les informations sur les livres.


Quitter l'application (un peu de feel)

Ajoutez ce qu'il faut pour quitter l'application quand l'utilisateur clique sur le bouton "Quitter" ou quand il ferme la fenêtre de l'application.


Correction finale (pour tout le TP) :

Classe GUILivre.java

Ça vous rappelle quelque chose ? (attention, nécessite Flash, et c'est mieux avec le son ; cliquez sur le triangle après le chargement)


Pour ceux qui ont déjà fini :

Allez voir le tutoriel de Sun sur Swing. Vous y apprendrez certainement quelque chose.

Retour TPs