Académique Documents
Professionnel Documents
Culture Documents
2
Interface graphique
▪ Une interface graphique est formée d’une ou plusieurs fenêtres qui
contiennent divers composants graphiques (widgets) tels que
- Boutons
- Menus
- Listes
- champ texte
- etc…
▪ Les interfaces graphiques sont souvent appelées GUI d’après l’anglais Graphical
User Interface
3
Les API utilisées par les interfaces graphiques en java
▪ AWT(Abstract Window Toolkit, JDK 1.1) et Swing(JDK/SDK 1.2) font partie
de JFC (Java Foundation Classes) qui offre des facilités pour construire des
interfaces graphiques
4
Swing ou AWT?
▪ Tous les composants de AWT ont leur équivalent dans Swing
Mais Swing est plus lourd
➢ en plus joli et plus lent que AWT
➢ avec plus de fonctionnalités
Ne dépend pas du système d’exploitation Dépend du Système d’exploitation
6
Afficher une fenêtre (JFrame)
Ou setTitle(« »)
Ou setBounds(…)
Affiche la fenêtre
7
Taille d’une fenêtre
Constante Rôle
DISPOSE_ON_CLOSE détruit la fenêtre
DO_NOTHING_ON_CLOSE rend le bouton de fermeture inactif
HIDE_ON_CLOSE cache la fenêtre
EXIT_ON_CLOSE Quitte le programme
9
Le « ContentPane »
▪ On obtient ce content pane par (topLevel est un container lourd ; JFrame par
exemple)
Container contentPane=topLevel.getContentPane();
10
Exemple: Ajouter des composants
11
Depuis JDK 5
▪ On peut désormais ajouter directement les composants dans un composant
« top-level » :
❖Ce container va en fait déléguer à son content pane qui existe toujours
12
JPanel
13
Layout managers
Layout managers
▪ L’utilisateur peut changer la taille d’une fenêtre ; les composants de la fenêtre doivent alors
être repositionnés
▪ Les fenêtres (plus généralement les containers) utilisent des gestionnaires de mise en place
(layout manager) pour repositionner leurs composants
▪ Il existe plusieurs types de layout managers avec des algorithmes de placement différents
16
Types de Layout manager
17
FlowLayout
▪ La classe FlowLayout place les composants ligne par ligne de gauche à droite.
▪ Chaque ligne est complétée progressivement jusqu'à être remplie, puis passe à la suivante.
▪ Constructeurs :
• FlowLayout()
19
BorderLayout
▪ Avec ce Layout Manager, la disposition des composants est commandée par une mise en page en bordure
qui découpe la surface en cinq zones : North, South, East, West, Center.
▪ BorderLayout consacre tout l'espace du conteneur aux composants. Le composant du milieu dispose de la
▪ Si on oublie de spécifier le placement lors de l'ajout d'un composant, celui-ci est placé au centre
▪ Constructeurs :
• BorderLayout( )
21
GridLayout
▪ Ce Layout Manager établit un réseau de cellule identiques qui forment une sorte
de quadrillage invisible : les composants sont organisés en lignes et en colonnes.
▪ Les éléments insérés dans la grille ont tous la même taille. Les cellules du
quadrillage se remplissent de droite à gauche ou de haut en bas.
▪ Constructeurs :
• GridLayout( int row, int cols ) : le premier paramètre (row) est le
nombre de lignes tandis que le deuxième (cols) est le nombre de colonnes.
• GridLayout( int row, int cols, int hgap, int vgap ) : permet de
préciser en plus l'espacement horizontal et vertical entre les composants.
22
Exemple GridLayout
23
Les composants Graphiques Atomiques
Les Labels (JLabel)
▪ Servent essentiellement à afficher du texte et des images
▪ Constructeurs:
o JLabel(String)
o JLabel(ImageIcon)
o JLabel(String, ImageIcon, int ALIG_HORIZONTAL)
▪ quelques méthodes:
o void setText(String): Permet d'initialiser ou de modifier le texte affiché
o void setForGround(Color):Permet de préciser la couleur du texte
o void setFont(Font):Permet de préciser la police du texte
❖ Font f=new Font(font, style, taille)
25
Exemple JLabel
26
Zones texte :JTextField & JPasswordField
▪ Destinées pour saisir du texte sur une seule ligne
▪ Constructeurs JTextField:
• JTextField()
• JTextField(String)
• JTextField(int colonne)
▪ quelques méthodes:
• String getText(): Renvoyer le texte saisi
• void setText(String):Modifier le contenu du texte
• void setEditable(boolean):Permet de préciser si les données du composant sont éditables ou non
▪ Constructeurs JPasswordField:
• JPasswordField()
▪ Constructeurs:
• JTextArea(String)
• JTextArea(int ligne, int colonne)
▪ quelques méthodes:
• void setFont(Font)
• void setForground(Color)
28
Exemple: zone Texte
29
Les boutons: JButton
▪ Un bouton est un composant possédant un label et qu'on peut cliquer dessus
▪ Constructeurs:
• JButton(String)
• JButton(ImageIcon)
• JButton(String,ImageIcon)
▪ quelques méthodes:
• void SetEnabled(boolean) : changer l’état d’activité du bouton
• String getText():retourner le texte contenu dans le bouton
• void setText(String):changer le texte contenu dans le bouton
31
Les Boutons: JCheckBox
▪ Constructeurs:
• JCheckBox(String)
• JCheckBox(String,boolean)
▪ quelques méthodes:
• void setSelected(boolean) : sélectionner (désélectionner) l’option
• boolean isSelected() : Indiquer si le composant est dans l'état sélectionné
32
Exemple: JCheckBox
33
Les Boutons: JRadioButton
▪ Contrairement au JCheckbox, utilisés pour le choix exclusive (exemple : homme/femme)
▪ Nécessité de placer les choix dans un objet contexte: ButtonGroup
▪ Constructeurs:
• Les mêmes que JCheckbox
▪ Les opérations:
• Les mêmes que pour JCheckBox
▪ ButtonGroup:
• Constructeur: un seul, pas de paramètre
• Ajouter des JRadioButton: add(JRadioButton)
34
Exemple: JRadioButton
35
Listes déroulantes
▪ En Swing, il existe 2 sortes de listes déroulantes :
▪ JComboBox: c'est une liste déroulante normale, de celle que vous voyez
partout dans les applications.
36
Liste: JComboBox
▪ La classe JComboBox permet la sélection d'une seule entrée parmi une séquence
▪ Constructeurs:
• JComboBox()
• JComboBox(Object[] items)
• JComboBox(Vector<?> items)
▪ Principales Méthodes :
• void addItem(Object anObject):ajouter un élément à la liste
37
Exemple JComboBox
38
Exercices
1. Ecrire un programme java qui permet d’afficher la fenêtre suivante :
39
Gestion des événements
40
Gestion des événements
▪ Dans java, pour qu’un objet puisse répondre à un événement, il faut lui
attacher un écouteur (Listener).
• ….
41
Gestionnaire d’événement ActionListener
▪ ActionListener est une interface qui définit une seule méthode:
• public void actionPerformed(ActionEvent e);
▪ L’événement actionPerformed est produit quand on valide une action par un clique ou par la
touche de validation du clavier.
▪ Pour gérer cet événement dans une application, il faut créer une classe implémentant l’interface
ActionListener et redéfinir la réponse aux événements utilisateur, produits dans l’interface, dans
la méthode actionPerformed.
▪ Quand on clique, par exemple, sur un bouton qui est branché sur cet écouteur, la méthode
actionPerformed de l’écouteur s’exécute
42
Classe de l'écouteur
44
Solution 1:classe C
45
Solution 2:classe interne
46
Solution 3:classe interne anonyme
47
Méthode getSource
48
Exercice corrigé
✓ Décrémenter un compteur
49
Solution
50
Exercices
1. Ecrire une application java/Swing permettant la conversion euros → dinars et inversement.
L’apparence de cette application est donnée par la figure suivante:
51
Composant complexe (JTable)
Introduction
▪ Pour visualiser et manipuler un gros volume d’informations : composants
spécifiques
▪ L’API Java Swing propose plusieurs composants pour visualiser les informations :
o JTable, JList, JTree, JGraph,…
53
MVC: Principes de base
▪ Le modèle d’architecture MVC (Model View Controller) est à la base de nombreux
systèmes de visualisation graphiques
54
JTable
▪ Un JTable est un composant Swing permettant d'afficher un tableau
formé d'un certain nombre de lignes et d'un certain nombre de colonnes.
Les ascenseurs:
Class : JScrollPane
Constructeur : JScrollPane(Component)
55
Exemple de table simple
▪ La façon la plus simple, mais pas la meilleure, est de passer directement à JTable un tableau à deux
dimensions pour les données et un tableau à une dimension pour l'en-tête de chaque colonne.
56
Modèle du tableau
▪ Une chose indispensable à faire lorsqu'on utilise des JTable est d'utiliser un modèle de tableau
pour stocker les données.
▪ Voici les méthodes qu'il faudra redéfinir pour notre modèle de données statique :
• int getRowCount() : doit retourner le nombre de lignes du tableau
• int getColumnCount() : doit retourner le nombre de colonnes du tableau
• Object getValueAt(int rowIndex, int columnIndex) : doit retourner la valeur du
tableau à la colonne et la ligne spécifiées
• String getColumnName(int columnIndex) : doit retourner l'en-tête de la colonne spécifiée
57
Exemple de tableau avec modèle (1)
58
Exemple de tableau avec modèle (2)
▪ Classe du modèle « TableModele.java »:
59
Exemple de tableau avec modèle (3)
60
Exercice
On souhaite développer une application de gestion des étudiants, pour ce faire on va suivre les étapes suivantes :
➢ Étape 1 : Développement de la couche métier Dans cette étape on demande de créer :
▪ La classe Etudiant caractérisée par : id, nom, prénom, sexe et filière. Dans cette classe :
o Respecter le principe d'encapsulation,
o Mettre deux constructeurs l'un en précisant l'id et l'autre sans le préciser. Dans ce 2ème cas l’id doit être auto-incrément.
▪ L’interface IGestionEtudiants avec les méthodes suivantes :
o Etudiant ajouterEtudiant(Etudiant e);
o List<Etudiant> rechercherParMC(String mc);
o void trierListeEtudiantsParNom();
o List<Etudiant> listeDesEtudiants();
▪ La classe GestionEtudiants qui implémente l'interface IGestionEtudiants et redéfinir toutes les méthodes de l'interface.
➢ Étape 2 : Développement de la couche présentation
▪ Dans cette étape on demande de créer une interface utilisateur avec la bibliothèque Swing. Cette interface permet de gérer
les étudiants (voir figure ci-dessous) :
61