Interfaces Graphiques avec Java
TD 2
Exercice 1
- Les styles de mise en page courants
Écrire une classe LayoutExample permettant de visualiser,
dans des frames internes de classe JInternalFrame, les mises
en pages gérées par les classes :
- FlowLayout, utilisée par défaut dans les JPanel;
- GridLayout, utilisée pour répartir les composants dans
une grille régulière;
- BorderLayout, utilisée par défaut dans le
contentPane des JFrame;
- BoxLayout, utilisée pour aligner les composants dans une
boîte suivant un axe choisi (X_AXIS pour l'axe
horizontal et Y_AXIS pour l'axe vertical);
On pourra positionner les différents JInternalFrame dans un
JDesktopPane qui représente alors le conteneur du bureau
virtuel contenant les différentes frames internes. Ce
desktop pourra être ajouté au contentPane de la
JFrame visualisant l'ensemble.
Essayer de redimenssioner chacune des JInternalFrame pour
observer le comportement des composants que leur layout gère.
Insérer des appels à la méthode pack() sur chacune de ces
JInternalFrame avant de les ajouter au JDesktopPane
et observer l'effet de ces appels.
Exercice 2
- Étiquettes et icônes
Écrire un programme qui affiche une fenêtre (JFrame) dans
laquelle on effectuera les modifications et les ajouts suivants:
- Positionner le layout du contentPane de cette
JFrame de sorte que les composants y soient ajoutés
verticalement de haut en bas.
- Lier la fermeture de la fenêtre à la sortie de l'application.
- Ajouter un premier label contenant le texte "Label 1" dans la
fonte "SanSerif" en gras italique de taille 18 (classe
java.awt.Font). Positionner la couleur de fond du label à
jaune et celle du texte à rouge.
- Faire afficher, dans la fenêtre de contrôle, l'ensemble des noms
des familles de fontes disponibles (méthode
getAvailableFontFamilyNames() sur un objet de la classe
java.awt.GraphicsEnvironment).
- Créer et ajouter, pour chacun de ces noms de familles de fontes,
un label portant ce nom écrit dans cette fonte, en style normal et
de taille 14. On fera en sorte que 5 pixels séparent chaque label.
- Créer et ajouter un label de 80 pixels sur 50, ayant un icône
centré à droite et le texte "Label avec icône" aligné en bas à
gauche.
- Faire en sorte que lorsque la fenêtre de votre application
s'affiche à l'écran, elle soit située au milieu de ce dernier.
Exercice 3
- Listes déroulantes
On veut créer et afficher, dans une fenêtre, les composants
suivants:
- Un champ de texte, éditable, contenant un texte par défaut.
- Un bouton déroulant (JComboBox) permettant de choisir
et de modifier la fonte utilisée pour afficher le champ de texte
(initialiser avec trois ou quatre possibilités de fontes).
- Rendre ce bouton déroulant éditable afin de pouvoir
dynamiquement ajouter de nouvelles fontes dans la liste.
- Un champ de texte éditable indiquant la taille de la fonte
utilisée et permettant de la modifier. On ajoutera deux boutons
permettant également de l'augmenter ou de la réduire.
Exercice 4
- GridBagLayout et GridBagConstraints
Écrire une classe permettant d'afficher un formulaire du type de
celui-ci :

Pour cela, on veut utiliser les classes GridBagLayout et
GridBagConstraints
- Faire hériter votre classe de JFrame.
- Créer un GridBagLayout afin de le positioner comme
gestionnaire de layout du contentPane de la JFrame.
- Créer les différents composants nécessaires pour votre formulaire
(JCheckBox, JTextField, JButton,
JComboBox, etc.).
- Découpez les différentes parties de votre formulaire et ajoutez
dans le contentPane les différents composants en spécifiant, pour
chacun d'entre eux, les paramètres distincts du layout à l'aide d'un
objet GridBagConstraints.
Exercice 5
- Console de mise à feu
On veut disposer de deux boutons dans une fenêtre simulant une
console de mise à feu:
- le bouton de mise à feu ("FIRE") est initialement désactivé et on
doit cliquer sur l'autre bouton, de sécurité ("Click for Fire"), pour
pouvoir activer le bouton de mise à feu;
- lorsque le bouton de mise à feu est activé, le texte du bouton de
sécurité (qui doit être enfoncé) devient "Click for Lock". Si ce
bouton est désenfoncé, il reprend son texte original et le
bouton de mise à feu est désactivé;
- lorsqu'il a été clické une fois, le bouton de mise à feu est
désactivé et le bouton de sécurité ressort, de sorte à
interdire deux mises à feu consécutives. Le bouton de sécurité
reprend alors son texte initial.
Écrire un programme vérifiant ces contraintes.
Exercice 6
- Layout dynamique
Écrire un programme qui propose, dans une partie d'une fenêtre, la
visualisation de plusieurs composants (par exemple des labels) et dans
l'autre partie de la fenêtre un ensemble de choix (sous la forme de
radio boutons) permettant dynamiquement de changer le layout
d'organisation des composants dans la première partie.