Voici un squelette d'Applet:
import java.applet.*; import java.awt.*; import java.awt.event.*; public class Carte extends Applet{ java.awt.Image[] tbimg; java.awt.Image img; java.awt.Image current; Point[] lesPoints; public void init(){ this.addMouseMotionListener(new Listener(this)); tbimg = new java.awt.Image[8]; lesPoints = new Point[8]; lesPoints[0] = new Point(245,215); lesPoints[1] = new Point(260,129); lesPoints[2] = new Point(400,212); lesPoints[3] = new Point(121,278); lesPoints[4] = new Point(153,383); lesPoints[5] = new Point(335,450); lesPoints[6] = new Point(320,344); lesPoints[7] = new Point(209,438); tbimg[0] = getImage(getCodeBase(),"pparis.jpg"); tbimg[1] = getImage(getCodeBase(),"llille.jpg"); tbimg[2] = getImage(getCodeBase(),"sstrasbourg.jpg"); tbimg[3] = getImage(getCodeBase(),"nantes.jpg"); tbimg[4] = getImage(getCodeBase(),"bordeaux.jpg"); tbimg[5] = getImage(getCodeBase(),"mmarseille.jpg"); tbimg[6] = getImage(getCodeBase(),"llyon.jpg"); tbimg[7] = getImage(getCodeBase(),"ttoulouse.jpg"); img = getImage(getCodeBase(),"france.png"); } public void paint(Graphics g){ g.drawImage(img,0,101,this); g.setColor(Color.RED); for (int i=0; i<8; i++){ g.fillOval((int) lesPoints[i].getX()-4, (int) lesPoints[i].getY()-4,8,8); } } public void update(Graphics g){ g.drawImage(img,0,101,this); if (current != null){ g.setColor(Color.WHITE); g.fillRect(0,0,200,100); g.drawImage(current,0,0,this); } g.setColor(Color.RED); for (int i=0; i<8; i++){ g.fillOval((int) lesPoints[i].getX()-4, (int) lesPoints[i].getY()-4,8,8); } } } class Listener extends MouseMotionAdapter{ Carte app; Listener(Carte im){ app = im; } public void mouseMoved(MouseEvent e){ int i; for (i=0; i<8; i++){ if (app.lesPoints[i].distance(e.getPoint())<30) break; } if ((i<8) && (app.current != app.tbimg[i])){ // une ligne a ajouter app.repaint(); } } }
Voici l'affichage que cela donne:
Voici des images des huit villes marquées par un point rouge sur la carte ainsi que l'image de la carte.
Paris:
Bordeaux:
Lyon:
Marseille:
Toulouse:
Nantes:
Strasbourg:
Lille:
France:
Complétez l'applet pour que l'image de la ville s'affiche en haut de l'applet quand un mouvement de souris est détecté à proximité du point correspondant sur la carte. Il n'y a qu'une ligne à ajouter.