L'API JAVA Swing
L'API JAVA Swing
Swing est une bibliothèque graphique de Java qui permet de créer des interfaces graphiques
(GUI). Elle fait partie du Java Foundation Classes (JFC).
Swing repose sur AWT (Abstract Window Toolkit), mais est plus puissante et flexible.
Elle est "lightweight", donc indépendante du système d'exploitation.
Composant Description
JFrame La fenêtre principale
JPanel Un conteneur pour organiser d’autres composants
JLabel Affiche un texte
JButton Bouton cliquable
JTextField Champ de texte
JTextArea Zone de texte multiline
JCheckBox Case à cocher
JRadioButton Bouton radio
JComboBox Liste déroulante
JTable Tableau de données
package com.java.swing;
import javax.swing.JFrame;
import javax.swing.JLabel;
// Créer la fenêtre
JFrame frame = new JFrame("Ma première fenêtre");
frame.setSize(300, 200); // taille : largeur x hauteur
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Ajouter un label
JLabel label = new JLabel("Bonjour le monde !");
frame.add(label);
// Afficher la fenêtre
frame.setVisible(true);
}
}
On aura le résultat suivant :
Explication :
Exercice pratique 1 :
package com.java.swing;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
// Layout vertical
frame.setLayout(new GridLayout(3, 1));
// Champ de texte
// Label vide
JLabel labelMessage = new JLabel("", SwingConstants.CENTER);
// Bouton
JButton boutonValider = new JButton("Afficher le nom");
frame.setVisible(true);
}
}
Exercice pratique 2 :
3. Layouts (Dispositions)
Sans layout, tous les composants se superposent. Les layouts permettent d’organiser les
composants dans la fenêtre.
Layout Description
FlowLayout Aligne les composants à la suite (par défaut)
Divise la fenêtre en 5 zones (NORTH, SOUTH, EAST, WEST,
BorderLayout
CENTER)
GridLayout Grille avec lignes et colonnes
BoxLayout Empile verticalement ou horizontalement
Exemple : BorderLayout
package com.java.swing;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
frame.setLayout(new BorderLayout());
frame.setVisible(true);
}
}
Le résultat est :
Exemple : GridLayout
package com.java.swing;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
frame.add(new JButton("1"));
frame.add(new JButton("2"));
frame.add(new JButton("3"));
frame.add(new JButton("4"));
frame.setVisible(true);
}
}
On aura :
Exercice pratique 3 :
package com.java.swing;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
frame.add(label);
frame.add(rouge);
frame.add(bleu);
frame.setVisible(true);
}
}
On aura :
package com.java.swing;
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
caseBox.addItemListener(e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
label.setText("Case cochée !");
} else {
label.setText("");
}
});
frame.setLayout(new FlowLayout());
frame.add(caseBox);
frame.add(label);
frame.setVisible(true);
}
}
Exercice pratique 4 :
5. Dialogues et menus
Méthode Utilité
showMessageDialog Affiche un message
showConfirmDialog Oui / Non / Annuler
showInputDialog Saisie de texte
showOptionDialog Choix personnalisé
package com.java.swing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
// Créer un bouton
JButton button = new JButton("Afficher message");
button.setBounds(70, 60, 150, 30);
frame.setVisible(true);
}
}
Le résultat sera :
Exemple : Confirmation
package com.java.swing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
"Confirmation",
JOptionPane.YES_NO_OPTION
);
if (choix == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
// Afficher la fenêtre
frame.setVisible(true);
}
}
On aura :
package com.java.swing;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
// Barre de menu
JMenuBar menuBar = new JMenuBar();
// Menu principal
JMenu menuFichier = new JMenu("Fichier");
// Éléments du menu
JMenuItem itemNouveau = new JMenuItem("Nouveau");
JMenuItem itemQuitter = new JMenuItem("Quitter");
// Construction du menu
menuFichier.add(itemNouveau);
menuFichier.add(itemQuitter);
menuBar.add(menuFichier);
// Ajout à la fenêtre
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
}
On aura :
Exercice pratique 5 :
JTable permet d’afficher des données en colonnes et lignes, comme un petit tableau Excel.
package com.java.swing;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
// En-têtes
String[] colonnes = {"Nom", "Prénom", "Âge"};
// Données
Object[][] donnees = {
{"Youssef", "Ali", 24},
{"Sarah", "Ben", 30},
{"Nour", "Ahmed", 21}
};
// Création de la JTable
JTable table = new JTable(donnees, colonnes);
frame.setVisible(true);
}
}
On aura :
package com.java.swing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
// Afficher la fenêtre
frame.setVisible(true);
}
}
On aura :
Exercice pratique 6 :
Crée une fenêtre avec une JTable qui affiche une liste de livres :
Colonnes : Titre, Auteur, Année
3 lignes de livres en données
Objectif :
Structure du projet
Exercice final :