© Sofia ZAIDENBERG CNRS Mai 2007 1
Interfaces Graphiques
Dessiner avec JAVA
Contexte Graphique
Rafraîchissement
Java2D
© Sofia ZAIDENBERG CNRS Mai 2007 2
GUI Bibliographie
The JFC Tutorial: A guide to constructing GUI
Kathy Walrath, Mary Campione
http://java.sun.com/docs/books/tutorial/uiswing
Java Tutorial Specialized trails: Trail: 2D Graphics
Deborah Adair, Jennifer Ball and Monica Pawlan
http://java.sun.com/docs/books/tutorial/2d
Java 2D Graphics
Jonathan Knudsen, Ed. O'Reilly
Java 2D API Graphics
Vincent J. Hardy, Java Series, Prentice Hall
© Sofia ZAIDENBERG CNRS Mai 2007 3
GUI Adaptateurs d’événements
Dessin des segments de droite
Gestion des événements souris
Déplacement de la souris sur
la zone de dessin met à jour
les coordonnées du curseur
dans la barre d’état
MOUSE_MOVED, MOUSE_DRAGGED
Appuyer sur un bouton de la
souris (MOUSE_PRESSED) définit
le début d’une droite
Relâcher le bouton de la
souris (MOUSE_RELEASED)
définit la fin de la droite
type d’événement : MouseEvent
source : zone de dessin
interface d’écoute : MouseListener
récepteur : zone de dessin
< interface >
MouseListener
void mouseClicked(MouseEvent)
void mouseEntered(MouseEvent)
void mouseExited(MouseEvent)
void mousePressed(MouseEvent)
void mouseReleased(MouseEvent)
Comme pour la fermeture de la
fenêtre seule deux des méthodes
de l ’interface nous intéressent
© Sofia ZAIDENBERG CNRS Mai 2007 4
GUI Adaptateurs d’événements
Dessin des segments de droite
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ZoneDessin extends JPanel
implements MouseMotionListener {
private BarreEtat be;
public ZoneDessin(BarreEtat be) {
setBackground(Color.white);
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
this.be = be;
addMouseMotionListener(this);
}
public void mouseMoved(MouseEvent e) {
be.afficheCoord(e.getX(),e.getY());
}
public void mouseDragged(MouseEvent e) {
be.afficheCoord(e.getX(),e.getY());
}
} // ZoneGraphique
addMouseListener(new GestionnaireClic(this));
public void initieDroite(int x, int y) {
be.afficheMessage("Relacher pour dessiner la droite");
// on complétera ensuite
}
public void termineDroite(int x, int y) {
be.afficheMessage("Cliquer pour initier une droite");
// on complétera ensuite
}
import java.awt.event.*;
public class GestionnaireClic
extends MouseAdapter {
ZoneGraphique zone;
public GestionnaireClic(ZoneGraphique z)
{
zone = z;
}
public void mousePressed(MouseEvent e)
{
zone.initieDroite(e.getX(),e.getY());
}
public void mouseReleased(MouseEvent e)
{
zone.termineDroite(e.getX(),e.getY());
}
}
Pour ne pas avoir à définir des
méthodes inutiles possibilité
d’utiliser un adaptateur
d’événements : MouseAdapter
© Sofia ZAIDENBERG CNRS Mai 2007 5
GUI Adaptateurs d’événements
Dessin des segments de droite
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ZoneDessin extends Jpanel implements MouseMotionListener {
private BarreEtat be;
public ZoneDessin(BarreEtat be) {
setBackground(Color.white);
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
this.be = be;
addMouseMotionListener(this);
}
public void initieDroite(int x, int y) {
be.afficheMessage(« Relacher pour dessiner la droite »);
// on complétera ensuite
}
public void termineDroite(int x, int y) {
be.afficheMessage(« Cliquer pour initier une droite »);
// on complétera ensuite
}
...
} // ZoneGraphique
new MouseAdapter() {
public void mousePressed(MouseEvent e)
{
initieDroite(e.getX(),e.getY());
}
public void mouseReleased(MouseEvent e)
{
termineDroite(e.getX(),e.getY());
}
}
addMouseListener(
);
Avec une classe interne
inner class ») anonyme
ZoneDessin.this
L’instance de la classe
anonyme a implicitement
accès à l’instance de la
classe externe qui (c.-à-d.
l’instance) a provoqué sa
création :
en conséquence elle a
accès aux membres de la
classe externe
1 / 46 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 !