Professional Documents
Culture Documents
en Java -
Introduction
Université de Nice - Sophia Antipolis
Version TA 2.1 – 13/4/02
Richard Grin
Richard Grin Interface graphique 1
Contributions
• Beaucoup d’exemples de cette partie du cours
sont fortement inspirés du livre
Au cœur de Java 2
Volume I - Notions fondamentales
de Horstmann et Cornell
The Sun Microsystems Press
Java Series
• De nombreuses images proviennent du tutoriel
en ligne de Sun (gratuit) :
http://java.sun.com/docs/books/tutorial/
Richard Grin Interface graphique 2
Plan de cette partie
• Généralités sur les interfaces graphiques
• Affichage d'une fenêtre
• Classes de base ; AWT et Swing
• Placer des composants dans une fenêtre
• Gestion des événements
• Modèle MVC ; exemple des listes
• Dessiner ; afficher une image
super("Une fenêtre");
ou setBounds(…)
setSize(300, 200);
pack(); compacte le contenu de la fenêtre
setVisible(true); (annule setSize)
} ou show(),
affiche la fenêtre
public static void main(String[] args) {
JFrame fenetre = new Fenetre();
}
}
Component
Composants Les composants
AWT de Swing sont
Container des containers
JComponent
Applet
Frame Dialog JWindow
JApplet
JFrame JDialog
Box.createRigidArea(new Dimension(5,0))))
Box.createHorizontalGlue())
new Box.Filler(
new Dimension(5,100),
new Dimension(5,100),
new Dimension(Short.MAX_VALUE,100))
Mauvais
public Fenetre() {
. . . // ajout des composants dans la fenêtre
// Fenetre écoute les composants
b1.addActionListener(this);
b2.addActionListener(this);
f.addActionListener(this);
. . .
}
Richard Grin Interface graphique 91
Exemple (suite)
public void actionPerformed(ActionEvent e) {
Object source = e.getSource(); Suppose que
if (source == b1) { l'on est dans
. . . // action liée au bouton b1 la portée de b1
} qui contient une
else if (source == b2) { référence au
. . . // action liée au bouton b2 bouton
}
else if (source == f) {
. . . // action liée au JTextField f
}
. . . Risque de nombreux
} if … else
Modèle
< update < change
Evénements
getData >
Vue Contrôleur
< change
• donne une vue d’une • traite les événements
partie des données
• observe le modèle
Richard Grin Interface graphique 141
Architecture MVC
Modèle
< update < change
Evénements
getData >
Vue Contrôleur
(optionnel)
Modèle
< change
Evénements
getData >
Vue Contrôleur
< change
update >
Composant Ecouteurs
change >
< change
< getData
change >
Modèle
< update update >
getWidth()
y
Richard Grin Interface graphique 173
Surface disponible pour l’affichage
public void paintComponent(Graphics g) {
...
Insets insets = getInsets();
int largeurDisponible =
getWidth() - insets.left - insets.right;
int hauteurDisponible =
getHeight() - insets.top - insets.bottom;
...
/* Peindre dans le rectangle défini par
les points (insets.left, insets.height) et
(getWidth()-insets.right, getHeight()-insets.bottom)
*/
}
BufferedImage ImageIcon