Java
Dessiner avec JAVA
Contexte Graphique Rafraîchissement Java2D
© Philippe GENOUD
UJF
Mai 2005
1
GUI
The JFC Tutorial: A guide to constructing GUI Kathy Walrath, Mary Campione
bibliographie bibliographie
http://java.sun.com/docs/books/tutorial/uiswing Java Tutorial Specialized trails : Trail: 2D Graphics Deborah Adair, Jennifer Ball and Monica Pawlanhttp://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
© Philippe GENOUD
UJF
Mai 2005
2
1
GUI
Adaptateurs d’événements Adaptateurs d’événements Dessin des segments de droite Dessin des segments de droite
Gestion des événements souris
Déplacement de la souris sur la zone dedessin 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 Relacher 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 Comme pour la fermeturede la fenêtre seule deux des méthodes de l ’interface nous intéressent
< interface > MouseListener
void mouseClicked(MouseEvent) void mouseEntered(MouseEvent) void mouseExited(MouseEvent) void mousePressed(MouseEvent) void mouseReleased(MouseEvent)
© Philippe GENOUD
UJF
Mai 2005
3
GUI
import java.awt.*; import javax.swing.*; import java.awt.event.*;
Adaptateurs d’événementsAdaptateurs d’événements Dessin des segments de droite Dessin des segments de droite
Pour ne pas avoir à définir des méthodes inutiles possibilité d’utiliser un adaptateur d’événements : MouseAdapter
public class ZoneDessin extends JPanel implements MouseMotionListener { private BarreEtat be; public ZoneDessin(BarreEtat be) { setBackground(Color.white); setCursor(newCursor(Cursor.CROSSHAIR_CURSOR)); this.be = be; addMouseMotionListener(this); } addMouseListener(new GestionnaireClic(this));
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()); } }
public void mouseMoved(MouseEvent e) { be.afficheCoord(e.getX(),e.getY()); } public void mouseDragged(MouseEvent e) { be.afficheCoord(e.getX(),e.getY()); }
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 unedroite"); // on complétera ensuite } } // ZoneGraphique
© Philippe GENOUD
UJF
Mai 2005
4
2
GUI
import java.awt.*; import javax.swing.*; import java.awt.event.*;
Adaptateurs d’événements Adaptateurs d’événements Dessin des segments de droite Dessin des segments de droite
Avec une classe interne (inner classe) anonyme
public class ZoneDessin extends Jpanel implementsMouseMotionListener { private BarreEtat be; public ZoneDessin(BarreEtat be) { setBackground(Color.white); setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); this.be = be; addMouseMotionListener(this); addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { initieDroite(e.getX(),e.getY()); } public void mouseReleased(MouseEvent e) { termineDroite(e.getX(),e.getY()); } } ); } public voidinitieDroite(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 © Philippe GENOUD UJF Mai 2005
L’instance de la classe anonyme a implicitement accès à l ’instance de la classe externe qui (c.a.d....
Regístrate para leer el documento completo.