Outils de d´
eveloppement,
programmation ´
ev´
enementielle et IHM
Chapitre 6
Interfaces fenˆ
etr´
ees avec SWING
Cyrille Bertelle - UFRST Le Havre
0-0
IHM - Swing
Swing : Introduction
Kit de d´
eveloppement d’interface graphique ”l´
eger” du
JFC (Java Foundation Class), invoqu´
e par le package
javax.swing
Simplifie l’utilisation de l’AWT tout en donnant des
fonctionnalit´
es avanc´
ees pour la cr´
eation d’interfaces
utilisateurs (IHM)
Portage ind´
ependant du syst`
eme de fenˆ
etrage - Possibilit´
e
de sp´
ecifier le ”look and feel” qui rapproche le r´
esultat des
syst`
emes fenˆ
etr´
es connus (Windows, Motif + M´
etal (Sun)
... limitations dues aux copyrights)
1- C. Bertelle @ Universit´e du Havre
IHM - Swing
Swing et AWT
Les classes de Swing sont souvent des classes d´
eriv´
ees de
l’AWT (pr´
efix´
ees par J : JFrame, JButton, ...) avec des
fonctionnalit´
ees d’utilisation simplifi´
ees.
javax.swing.JApplet classe d’applets d’utilisation
similaire `
ajava.applet.Applet mais qui doit ˆ
etre
utilis´
ee si on int`
egre des composants Swing.
2- C. Bertelle @ Universit´e du Havre
IHM - Swing
Swing et AWT - exemple de JApplet
On reprend l’applet ”HelloWorld” du 7.1
import java.awt.*;
public class JappletHello
extends javax.swing.JApplet {
public void paint (Graphics g) {
g.drawString("Hello World", 50, 25);
}
}
3- C. Bertelle @ Universit´e du Havre
IHM - Swing
Utilisation de cadres JFrame
Un JFrame est structur´
e en plusieurs couches superpos´
ees :
1. JRoot : pas abord´
e pour l’instant (g`
ere le ”look and feel’”,
p.e.)
2. Gestionnaire de mise en page : permet de choisir des
mod`
eles de placement de conteneurs de composants (`
a
g´
erer de mani`
ere facultative)
3. Gestionnaire de barres de menus : pour placer des menus
d´
eroulants (`
a g´
erer de mani`
ere facultative)
4- C. Bertelle @ Universit´e du Havre
IHM - Swing
4. Couche de contenu / container : tout composant ne peut
ˆ
etre plac´
e que dans un container (diff´
erence avec AWT), il
faut le g´
erer obligatoirement
5. Couche des composants `
a placer dans le container
5- C. Bertelle @ Universit´e du Havre
IHM - Swing
JFrame - un exemple (1)
Le programme qui va suivre g`
ere un JFrame :
On le dimensionne et on lui donne un titre.
On g`
ere sa fermeture d’une mani`
ere simplifi´
ee (par rapport
`
a 8.2.1) : on n’impl´
emente pas l’interface
WindowListener mais on invoque la m´
ethode
addWindowListener avec un param`
etre de type
WindowAdapter sur lequel on peut ne red´
efinir que
l’op´
erateur de fermeture (windowClosing()).
On r´
ecup`
ere le container du JFrame sur lequel on place
un composant volet de type JPanel qui va permettre
l’affichage d’une chaˆ
ıne de caract`
eres.
6- C. Bertelle @ Universit´e du Havre
IHM - Swing
Pour faire cela, on construit une classe d´
erivant de
JPanel qui impl´
emente la m´
ethode paintComponent
remplac¸ant la m´
ethode paint de l’AWT (`
a ne plus
utiliser directement).
7- C. Bertelle @ Universit´e du Havre
IHM - Swing
JFrame - un exemple (2)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class HelloPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Bonjour", 75, 100);
} }
class Terminator extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
} }
8- C. Bertelle @ Universit´e du Havre
IHM - Swing
class HelloFrame extends JFrame {
public HelloFrame() {
setTitle("HelloInFrame"); setSize(300, 200);
addWindowListener(new Terminator());
Container HelloContainer = getContentPane();
HelloContainer.add(new HelloPanel());
} }
public class HelloInFrame {
public static void main(String[] args) {
JFrame frame = new HelloFrame();
frame.show();
} }
9- C. Bertelle @ Universit´e du Havre
1 / 20 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !