:: Enseignements :: IMAC :: IMAC2 :: IMAC2 2011-2012 :: Programmation Java ::
[LOGO]

Un peu de Swing sur un air de Java


Ce TD est une introduction à l'utilisation de la bibliothèque graphique Swing.

Exercice 1 - Example de JFrame

JFrame représente une fenêtre Swing. Nous allons créer une classe SimpleFrame affichant une fenêtre grâce à une JFrame.

  • Écrire une classe SimpleFrame affichant une fenêtre. On lui donnera un titre et une taille minimale (regarder la Javadoc).
  • Changer le comportement par défaut de la fenêtre lors de sa fermeture pour que l'application soit quittée (JFrame.setDefaultCloseOperation(EXIT_ON_CLOSE)).
  • Récupérer le panneau conteneur de la fenêtre (getContentPane()) et lui rajouter un JLabel comportant un texte court
  • Centrer le texte du JLabel (en utilisant setHorizontalAlignment())
  • Le conteneur de la fenêtre utilise comme LayoutManager un BorderLayout. Consulter la Javadoc pour la méthode add(Component,Object) pour ajouter un bouton "OK" (utilisant JButton) en dessous du label.

Exercice 2 - À la découverte de nouveaux composants

  • Créer une nouvelle JFrame nommée "Découverte" et y inclure les composants suivants :
    • un bouton (JButton)
    • un champ de texte (JTextField)
    • une zone de texte (JTextArea)
  • Ajouter une bulle d'aide contextuelle (setToolTipText()) sur le bouton
  • Rendre le bouton inopérant (setEnabled())
  • Changer la couleur du texte et du fond du bouton
  • Ajouter un texte dans le champ de texte et dans la zone de texte
  • Rendre le champ de texte non éditable
  • Ajouter une bordure au champ de texte (avec la méthode setBorder()) en fournissant un objet de type java.swing.border.Border créé via une méthode de la classe java.swing.BorderFactory, par exemple la méthode createLineBorder(Color color, int thickness)
  • Modifier la forme que le curseur prend quand il passe au dessus de la zone de texte, pour qu'il garde l'aspect d'une flèche

Exercice 3 - Associer des actions aux boutons

Le but de cet exercice est de créer une fenêtre contenant un bouton de label "Test" qui, lorsqu'il reçoit un clic, affiche "Test clic" sur la sortie standard.

  • Créer la fenêtre et le bouton
  • Créer une classe (elle doit être anonyme) implémentant l'interface ActionListener et effectuant l'affichage dans la méthode actionPerformed(ActionEvent)
  • Relier le listener au bouton grâce à la méthode addActionListener(ActionListener) du bouton.

Utiliser la même technique avec trois boutons, "Un", "Deux" et "Trois", qui permettent de changer le titre de la fenêtre principale de l'application en respectivement "*Un*", "*Deux*" et "*Trois*". Produire un code qui permette de rajouter facilement un bouton.

Exercice 4 - Auditeurs

Créer une fenêtre contenant un bouton intitulé "Add". À chaque clic sur ce bouton, il faudra ajouter un bouton dans la fenêtre, les uns à la suite des autres, numérotés à leurs créations. Quand on clique sur l'un d'entre eux, cela le fait disparaître. Ajouter (à la suite de "Add") un bouton "Reset" qui retire tous les boutons ajoutés.

Exercice 5 - À la maison

On souhaite créer un panneau contenant quatre cases à cocher (JCheckBox) étiquettées "zorro", "ivanhoé", "spiderman" et "moi". On veut faire en sorte qu'il n'y ait qu'une seule case sélectionnée à la fois. Il y a deux possibilités :
  • faire en sorte que lorsque l'on sélectionne une case, les autres soient automatiquement désélectionnées
  • faire en sorte de décocher la case sélectionnée avant de sélectionner la nouvelle

Il est possible d'obtenir tous les fils d'un Container (un JPanel est un Container) à l'aide des méthodes getComponentCount() et getComponent(int). Dans cet exercice, il est demandé de ne pas utiliser la classe ButtonGroup mais d'en reprogrammer le comportement.