les interfaces graphiques (GUI) en Java.
C’est ce qui permet de créer des applications interactives avec fenêtres, boutons, menus,
formulaires, etc.
Module : Interfaces Graphiques avec Java (Swing / JavaFX)
Objectif du module
Apprendre à construire une interface utilisateur complète avec Java, en comprenant :
Les bases de Swing (composants, événements, layout)
Le modèle MVC pour structurer une interface
Les événements et listeners
L’utilisation des layouts pour organiser les composants
Une introduction à JavaFX (GUI moderne avec CSS et FXML)
Partie 1 : Introduction à Swing
Swing, c’est quoi ?
Swing est une bibliothèque graphique intégrée dans le JDK, qui permet de créer des applications
graphiques portables.
Tous les composants Swing commencent par J :
JFrame, JButton, JLabel, JPanel, JTextField, JTable, etc.
Exemple 1 : Fenêtre simple (JFrame)
import [Link].*;
public class FenetreSimple {
public static void main(String[] args) {
JFrame frame = new JFrame("Ma première fenêtre");
[Link](400, 300);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}
Explication :
JFrame → crée la fenêtre.
setSize() → définit la taille.
setDefaultCloseOperation(EXIT_ON_CLOSE) → ferme le programme quand on clique sur ❌.
setVisible(true) → affiche la fenêtre.
Exemple 2 : Ajouter un label et un bouton
import [Link].*;
public class ExempleLabelBouton {
public static void main(String[] args) {
JFrame frame = new JFrame("Exemple Swing");
[Link](300, 200);
[Link](JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Cliquez sur le bouton !");
JButton bouton = new JButton("Cliquez ici");
JPanel panel = new JPanel(); // conteneur
[Link](label);
[Link](bouton);
[Link](panel);
[Link](true);
Partie 2 : Les événements (Event Handling)
Chaque composant peut déclencher un événement : clic, saisie, sélection, etc.
Exemple 3 : Clic sur un bouton
import [Link].*;
import [Link].*;
public class ExempleEvenement {
public static void main(String[] args) {
JFrame frame = new JFrame("Événement bouton");
JButton bouton = new JButton("Dis Bonjour");
JLabel label = new JLabel("...");
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
[Link]("Bonjour Swing !");
});
JPanel panel = new JPanel();
[Link](bouton);
[Link](label);
[Link](panel);
[Link](300, 200);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
Explication :
addActionListener() → écoute le clic.
ActionEvent → objet représentant l’action.
setText() → modifie le texte du label.
Version simplifiée (Lambda)
[Link](e -> [Link]("Bonjour Swing !"));
Partie 3 : Champs de texte et zones de saisie
import [Link].*;
import [Link].*;
public class ExempleTexte {
public static void main(String[] args) {
JFrame frame = new JFrame("Saisie de texte");
JTextField champ = new JTextField(10);
JButton bouton = new JButton("Afficher");
JLabel resultat = new JLabel("...");
[Link](e -> {
String texte = [Link]();
[Link]("Vous avez écrit : " + texte);
});
JPanel panel = new JPanel();
[Link](champ);
[Link](bouton);
[Link](resultat);
[Link](panel);
[Link](350, 150);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
Partie 4 : Layouts (Disposition des composants)
1. FlowLayout (par défaut)
Les composants sont placés à la suite les uns des autres.
[Link](new FlowLayout());
2. BorderLayout
Organise en 5 zones : NORTH, SOUTH, EAST, WEST, CENTER.
[Link](new BorderLayout());
[Link](new JButton("Nord"), [Link]);
[Link](new JButton("Centre"), [Link]);
3. GridLayout
Grille régulière.
[Link](new GridLayout(2, 3)); // 2 lignes, 3 colonnes
Partie 5 : Exemple complet — Mini Formulaire
import [Link].*;
import [Link].*;
public class Formulaire {
public static void main(String[] args) {
JFrame frame = new JFrame("Formulaire utilisateur");
[Link](400, 200);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](new GridLayout(3, 2));
JLabel lblNom = new JLabel("Nom :");
JTextField txtNom = new JTextField();
JLabel lblAge = new JLabel("Âge :");
JTextField txtAge = new JTextField();
JButton btnOk = new JButton("Valider");
JLabel lblResult = new JLabel();
[Link](e -> {
String nom = [Link]();
int age = [Link]([Link]());
[Link]("Bonjour " + nom + ", vous avez " + age + " ans !");
});
[Link](lblNom); [Link](txtNom);
[Link](lblAge); [Link](txtAge);
[Link](btnOk); [Link](lblResult);
[Link](true);
Partie 6 : MVC avec Swing (Modèle – Vue – Contrôleur)
Exemple simplifié
Modèle : données
Vue : interface graphique
Contrôleur : gestion des événements
class CompteurModele {
private int valeur = 0;
public int getValeur() { return valeur; }
public void incrementer() { valeur++; }
public class CompteurMVC {
public static void main(String[] args) {
CompteurModele modele = new CompteurModele();
JFrame frame = new JFrame("Compteur");
JLabel label = new JLabel("Valeur : " + [Link]());
JButton bouton = new JButton("Incrémenter");
[Link](e -> {
[Link]();
[Link]("Valeur : " + [Link]());
});
[Link](label, "North");
[Link](bouton, "South");
[Link](250, 150);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
Partie 7 : Introduction à JavaFX
JavaFX est la succession moderne de Swing :
Plus flexible
Style CSS
Fichiers FXML (structure XML)
Animations et médias
Exemple JavaFX minimal
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
Button btn = new Button("Dire Bonjour");
[Link](e -> [Link]("Bonjour JavaFX !"));
StackPane root = new StackPane(btn);
Scene scene = new Scene(root, 300, 200);
[Link]("Exemple JavaFX");
[Link](scene);
[Link]();
public static void main(String[] args) {
launch(args);
Résumé
Concept Description Exemple
JFrame Fenêtre principale new JFrame("Titre")
JPanel Conteneur de composants [Link](panel)
JButton, JLabel, JTextField Widgets de base Formulaire simple
ActionListener Gère les événements Clic sur un bouton
LayoutManager Organisation visuelle GridLayout, BorderLayout
JavaFX GUI moderne avec CSS et FXML [Link]()