Les solutions des exercices sélectionnés se trouvent dans le document
électronique The Thinking in Java Annotated Solution Guide, disponible pour une faible
somme depuis www.BruceEckel.com.
- Créer une applet/application utilisant la classe Console
comme montré dans ce chapitre. Inclure un champ texte et trois boutons. Lorsqu'on appuie sur chaque
bouton, faire afficher un texte différent dans le champ texte.
- Ajouter une boîte à cocher à l'applet de l'exercice 1, capturer
l'événement, et insérer un texte différent dans le champ texte.
- Créer une applet/application utilisant Console. Dans la
documentation HTML de java.sun.com, trouver le JPasswordField et
l'ajouter à ce programme. Si l'utilisateur tape le mot de passe correct, utiliser
JOptionPane pour fournir un message de succès à l'utilisateur.
- Créer une applet/application utilisant Console, et
ajouter tous les composants qui ont une méthode addActionListener()
(rechercher celles-ci dans la documentation HTML de java.sun.com; conseil : utiliser
l'index). Capturer ces événements et afficher un message approprié pour chacun dans un champ
texte.
- Créer une applet/application utilisant Console, avec un
JButton et un JTextField. Ecrire et attacher le listener
approprié de sorte que si le bouton a le focus, les caractères tapés dessus apparaissent dans le
JTextField.
- Créer une applet/application utilisant Console. Ajouter à
la fenêtre principale tous les composants décrits dans ce chapitre, y compris les menus et une
boîte de dialogue.
- Modifier TextFields.java de sorte que les caractères de
t2 gardent la casse qu'ils avaient lorsqu'ils ont été tapés, plutôt que les forcer
automatiquement en majuscules.
- Rechercher et télécharger un ou plusieurs des environnements de
développement de GUI disponibles sur Internet, ou acheter un produit du commerce. Découvrir ce
qu'il faut faire pour ajouter Bangbean à cet environnement et pour
l'utiliser.
- Ajouter Frog.class au fichier manifest comme montré dans
ce chapitre, et lancer jar pour créer un fichier JAR contenant à la fois
Frog et BangBean. Ensuite, télécharger et installer le BDK de Sun
ou utiliser un outil de développement admettant les Beans et ajouter le fichier JAR à votre
environnement de manière à pouvoir tester les deux Beans.
- Créer un JavaBean appelé Valve qui contient deux
propriétés : un boolean appelé on et un int appelé level. Créer
un fichier manifest, utiliser jar pour empaqueter le Bean, puis le charger dans la
beanbox ou dans un outil de développement acceptant les Beans, de manière à pouvoir le
tester.
- Modifier MessageBoxes.java de manière à ce qu'il ait un
ActionListener individuel pour chaque bouton (au lieu d'un correspondant au texte
du bouton).
- Surveiller un nouveau type d'événement dans
TrackEvent.java en ajoutant le nouveau code de traitement de l'événement. Il
faudra découvrir vous-même le type d'événement que vous voulez surveiller.
- Créer un nouveau type de bouton hérité de JButton. Chaque
fois qu'on appuie sur le bouton, celui-ci doit modifier sa couleur selon une couleur choisie de
façon aléatoire. Voir ColorBoxes.java au Chapitre 14 pour un exemple de la manière
de générer aléatoirement une valeur de couleur.
- Modifier TextPane.java de manière à utiliser un JTextArea
à la place du JTextPane.
- Modifier Menus.java pour utiliser des boutons radio au
lieu de boîtes à cocher dans les menus.
- Simplifier List.java en passant le tableau au
constructeur et en éliminant l'ajout dynamique d'éléments à la liste.
- Modifier SineWave.java pour transformer
SineDraw en JavaBean en lui ajoutant des méthodes get et set.
- Vous vous souvenez du jouet permettant de faire des dessins avec deux
boutons, un qui contrôle le mouvement vertical, et un qui contrôle le mouvement horizontal ? En
créer un, en utilisant SineWave.java comme point de départ. A la place des
boutons, utiliser des curseurs. Ajouter un bouton d'effacement de l'ensemble du dessin.
- Créer un indicateur de progression asymptotique qui ralentit au fur et à
mesure qu'il s'approche de la fin. Ajouter un comportement aléatoire de manière à donner
l'impression qu'il se remet à accélérer.
- Modifier Progress.java de manière à utiliser un
listener plutôt que le partage du modèle pour connecter le curseur et la barre de
progression.
- Suivre les instructions du paragraphe «Empaquetage d'une applet dans un
fichier JAR» pour placer TicTacToe.java dans un fichier JAR. Créer une page HTML avec la version
brouillonne et compliquée du tag applet, et la modifier pour utiliser le tag archive de manière à
utiliser le fichier JAR (conseil : commencer par utiliser la page HTML pour
TicTacToe.java qui est fournie avec le code source pour ce livre).
- Créer une applet/application utilisant Console. Celle-ci
doit avoir trois curseurs, un pour le rouge, un pour le vert et un pour le bleu de
java.awt.Color. Le reste du formulaire sera un JPanel qui affiche
la couleur fixée par les trois curseurs. Ajouter également des champs textes non modifiables qui
indiquent les valeurs courantes des valeurs RGB.
- Dans la documentation HTML de javax.swing, rechercher le
JColorChooser. Ecrire un programme avec un bouton qui ouvre le sélectionneur de
couleur comme un dialogue.
- Presque tous les composants Swing sont dérivés de
Component, qui a une méthode setCursor(). Rechercher ceci dans la
documentation HTML Java . Créer une applet et modifier le curseur selon un des curseurs disponibles
dans la classe Cursor.
- En prenant comme base ShowAddListeners.java, créer un
programme avec toutes les fonctionnalités de ShowMethodsClean.java du Chapitre
12.
[61] Une variante est appelée le
principe de l'étonnement minimum, qui dit essentiellement : «ne pas surprendre
l'utilisateur».
[62] Ceci est un exemple du modèle
de conception [design pattern] appelé la méthode du modèle [template
method].
[63] On suppose que le lecteur
connaît les bases du HTML. Il n'est pas très difficile à comprendre, et il y a beaucoup de livres
et de ressources disponibles.
[64] Cette page (en particulier la
partie clsid) semblait bien fonctionner avec le JDK1.2.2 et le JDK1.3rc-1. Cependant il se peut que
vous ayez parfois besoin de changer le tag dans le futur. Des détails peuvent être trouvés à
java.sun.com.
[65] Selon moi. Et après avoir
étudié Swing, vous n'aurez plus envie de perdre votre temps sur les parties plus
anciennes.
[66] Comme décrit plus avant, Frame
était déjà utilisé par AWT, de sorte que Swing utilise JFrame.
[67] Ceci s'éclaircira après avoir
avancé dans ce chapitre. D'abord faire de la référence JApplet un membre static de
la classe (au lieu d'une variable locale de main()), et ensuite appeler
applet.stop() et applet.destroy() dans
WindowAdapter.windowClosing() avant d'appeler
System.exit().
[68] Il n'y a pas de
MouseMotionEvent bien qu'il semble qu'il devrait y en avoir un. Le cliquage et le
déplacement sont combinés dans MouseEvent, de sorte que cette deuxième apparition
de MouseEvent dans le tableau n'est pas une erreur.
[69] En Java 1.0/1.1 on ne pouvait
pas hériter de l'objet bouton de façon exploitable. C'était un des nombreux défauts de
conception.