TP Java sur les interfaces graphiques

Richard Grin (grin@unice.fr) Retour TPs


But de ce TP :

Programmer une interface graphique ; le feel (et un peu de look)

On continue le TP précédent.
On fait afficher chaque livre d'un même auteur un par un. Les 2 questions suivantes implantent les fonctions de base.

Recherche d'un livre d'un auteur

Quand l'utilisateur entre un auteur et clique sur le bouton "Rechercher", les informations sur un livre de cet auteur sont affichées et l'utilisateur peut modifier le résumé du livre (mais pas les autres données). Pour cela, utilisez la documentation de la classe Livre pour trouver les méthodes à utiliser.
Si l'utilisateur a modifié le résumé d'un livre (et seulement dans ce cas), celui-ci s'enregistre automatiquement quand on passe à un autre livre. Indications : récupérez le document associé au JTextArea (getDocument()) et ajoutez-lui un DocumentListener qui servira à savoir si le résumé a été modifié (à vous de voir comment faire).

Si vous êtes en avance, vous pouvez essayer la variante pour laquelle un bouton "Enregistrer" permet d'enregistrer le nouveau résumé du livre. Le bouton ne sera validé que lorsque le résumé a été modifié. Un message demande confirmation à l'utilisateur si l'utilisateur passe à un autre livre sans enregistrer le résumé.


Recherche d'autres livres

Rendez fonctionnel le bouton "Suivant" qui permet de faire afficher un autre livre du même auteur. On peut ainsi parcourir tous les livres de cet auteur.
Pour avoir le livre suivant d'un auteur, consultez la documentation de la classe Livre.

Pour être plus précis, le bouton "Chercher" (que vous pouvez renommer "Fixer l'auteur") va fixer l'auteur des livres qui vont être recherchés ensuite. De plus, il affiche le premier livre de cet auteur. Le bouton "Suivant" (ou "Livre suivant"), affiche le livre suivant de l'auteur affiché dans la zone "auteur". Si l'utisateur a tapé un nouvel auteur depuis l'affichage du dernier livre, le bouton "Suivant" utilise cet auteur en donnant le premier livre de cet auteur.

Rendez fonctionnels tous les composants des onglets du TP précédent.

Correction :

GUILivre.java
On améliore un peu l'ordinaire...

Quitter prudemment...

Plutôt que de quitter l'application directement, l'application affiche une fenêtre de dialogue demandant confirmation à l'utilisateur avant de quitter (infos sur fenêtres de dialogue).
Placez le code pour quitter dans une instance de la classe Action :
comme la même action (quitter) peut être lancée de plusieurs façons différentes (bouton "Quitter", et fermeture de la fenêtre de l'application, et bientôt dans les questions suivantes par menu et raccourci clavier), utilisez la classe Action pour factoriser du code.

Correction :

GUILivre.java

Améliorer l'interface graphique

Des icônes :

Vous pourrez trouver ici quelques icônes que vous pouvez utiliser dans cette question. Voici le fichier jar que l'on peut obtenir (ça vous évitera un accès distant plus lent). Il contient les images .gif. Rappel : un fichier jar est au format zip et on peut donc le manipuler avec les utilitaires zip. Vous pourrez trouver bien d'autres sites Web qui fournissent des icônes (par exemple, http://sourceforge.net/projects/icon-collection/, http://www.novell.com/coolsolutions/nnlsmag/assets/ooo-stock.zip, http://svgicons.sourceforge.net/, http://www.buzzard.org.uk/jonathan/kde-icons.html).

Améliorez l'interface graphique de GUILivre en ajoutant

  • un titre à la fenêtre d'affichage : "Recherche de livres" (pas trop dur...)
  • une liste contenant tous les auteurs des livres ; l'utilisateur choisira entre la saisie de l'auteur, et le choix dans la liste (infos sur listes). Pour vous aider, voici un bout de code pour avoir une liste alphabétique des auteurs dans un tableau.
  • un comboBox qui combine la liste et la zone de saisie de l'auteur (infos sur combobox)
  • un menu "Principal" qui contient au moins un choix pour quitter et un choix pour rechercher un livre d'un auteur (idem bouton "Chercher"), un menu "Aide" qui contient au moins 2 choix : un pour aider (aide non contextuelle et très brève, affichée dans une fenêtre à part), et un pour afficher la version et les auteurs de l'application (souvent appelé "about" en anglais, avec au moins les noms et les adresses ; si vous avez une photo, mettez-la) (infos sur menus)
  • des raccourcis clavier pour quitter (Ctrl Q),  rechercher un 1er livre d'un auteur (Ctrl F) et avoir le livre suivant de l'auteur (Ctrl N ou Ctrl S, comme vous voulez) (infos sur raccourcis clavier ; exemple de "keystroke" pour un menu)
  • Des mnémoniques pour les menus (infos sur les mnémoniques)
  • une barre d'outils (infos sur barre d'outils) pour quitter, chercher et passer au suivant
  • ajoutez quelques bulles sur certains composants
  • Correction :

    Avec Combobox et tout le reste : GUILivre.java PanelImage.java
    Toutes les classes et images pour l'interface (décompactez et lisez le fichier lisez-moi) : solution.zip

    Pour ceux qui ont déjà fini :

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

    Retour TPs