 |
Publicité
|
Ce script est épuré de telle sorte qu'il ne reste que le strict minimum pour fonctionner.
C'est un point de départ pour un débutant.
Pour fonctionner RollOver.html, RollOver.class, ImageTop.gif et ImageBottom.gif doivent être présents dans le même répertoire.
Dans notre exemple, l'applet entière constitue le rollover : WIDTH=100 HEIGHT=50 dans RollOver.html.
Les images ImageTop et ImageBottom font aussi 100x50.
Voici donc le déroulement du fonctionnement :
import java.awt.*; // on veut manipuler des images
import java.applet.Applet; // On veut fabriquer une applet
public class RollOver extends Applet
{
// Déclaration des variables globales à l'applet :
Image ImageTop;
Image ImageBottom;
Image ImageAffiche;
String ImageTopName;
String ImageBottomName;
public RollOver()
{
ImageTop=null;
ImageBottom=null;
ImageAffiche=null;
}
//Init() est appelé par le navigateur lorsque l'applet est chargée. Elle ne s'exécute qu'une fois.
public void init()
{
// Lit le paramètre ImageTop dans RollOver.html
ImageTopName=getParameter("ImageTop");
// Lit le paramètre ImageBottom dans RollOver.html
ImageBottomName=getParameter("ImageBottom");
// Maintenant on demande à l'applet de charger les images
ChargeImages();
// Choix de l'image à afficher en premier
ImageAffiche=ImageBottom;
}
private void ChargeImages()
{
// On utilise un mediatracker pour suivre le chargement des images
// Ainsi on peut savoir si elles sont effectivement chargées ou non
MediaTracker mediaTracker = new MediaTracker(this);
// getDocumentBase() permet de retrouver l'URL de la page HTML
// Qui contient l'applet
ImageTop = getImage(getDocumentBase(), ImageTopName);
mediaTracker.addImage(ImageTop, 0);
ImageBottom = getImage(getDocumentBase(), ImageBottomName);
mediaTracker.addImage(ImageBottom, 1);
// On attend les images. Si une erreur se produit la partie 'catch' est exécuté
// On pourrait par exemple y placer un booléen pour connaître le résultat.
try{
mediaTracker.waitForAll(10000);
}
catch(java.lang.InterruptedException errInterruptedException) {
}
}
// Ensuite le paint() est effectué sans que l'on ait besoin de lui dire
// g représente le graphique de l'applet elle-même
public void paint(Graphics g)
{
if(ImageAffiche !=null ){
//On dessine dans l'applet l'image courante 'ImageAffiche'
g.drawImage(ImageAffiche, 0, 0, null);
}
}
// Quand l'applet fonctionne lorsque l'on passe la souris sur celui-ci
// On crée l'événement mouseEnter::
public boolean mouseEnter(Event event, int i, int j)
{
// Nouvelle image que l'on veut afficher
ImageAffiche=ImageTop;
// Affichage dans la barre de status du navigateur d'un message:
showStatus("Enter");
// On demande à ce que l'applet soit redéssiner. La méthode paint() sera appelée
repaint();
return true;
}
// Lorsque l'on sort de l'applet avec la souris:
// On crée l'événement mouseExit:
public boolean mouseExit(Event event, int i, int j)
{
ImageAffiche=ImageBottom;
showStatus("Exit");
repaint();
return true;
}
}
Maintenant il ne vous reste plus qu'à améliorer cette applet selon vos souhaits.
Il est toujours possible également d'utiliser des APIs plus récentes comme le Javax Swing pour être au TOP technologique.
L'applet est améliorable à tous les niveaux : récupération des images, récupération des événements, … mais c'est un début.
|