CNAM de Nice – « algo-prog TPA1 » F. Besnard
interfaces graphiques en java
Dans un programme, on appelle "interface graphique" l'ensemble des composants
graphiques (fenêtres, boutons, icônes, menus, …) permettant d’avoir une présentation
et un dialogue plus agréable pour l'utilisateur que les anciens modes purement textuels.
Il existe en java deux packages de gestion d'interface graphique: l'Abstract Window
Toolkit (java.awt), et SWING (javax.swing). Le deuxième est plus récent que le
premier (et s'appuie d'ailleurs sur lui); aussi est-ce SWING que nous utiliserons. Les
concepts de base sont partagés, et on peut utiliser simultanément les deux packages;
pour qu'il n'y ait pas de confusion au niveau des noms, chaque classe de SWING est
préfixée par la lettre "J". Par exemple, la classe gérant une fenêtre principale est
java.awt.Frame dans l'AWT, et javax.swing.JFrame dans SWING.
A.
A. Fenêtre minimale
Fenêtre minimale
On crée une instance de la classe JFrame, que l'on rend visible par l'appel des méthodes
"pack" et "setVisible":
package TP7;
import javax.swing.JFrame;
class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.pack();
frame.setVisible(true);
}
}
Dans le dossier TP7:
Compilation:
javac –classpath .. Main.java
Exécution:
java -classpath .. TP7.Main
Résultat: il n'apparaît que la barre de titre, car nous n'avons rien
mis à l'intérieur. De plus, on ne peut fermer en cliquant sur la
croix: il faut taper "ctrl-c" dans la fenêtre DOS.
B.
B. On ajoute un contenu
On ajoute un contenu
On veut rajouter des objets graphiques, tel qu'un texte (JLabel) ou un bouton (JButton).
Les objets graphiques doivent être placés dans un conteneur (JPanel). Enfin, les
différents conteneurs doivent être placés dans le conteneur principal de la fenêtre, que
l'on obtient à partir de sa méthode "getContentPane". On préfèrera l'approche de droite,
orientée objet (on crée une classe Frame1 dérivant de JFrame) à celle de gauche plus
classique, basée uniquement sur la composition:
sujet-tp7-intro-swing.sxw - 1 - 04/04/23