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.