L'applet Carte1 contiendra un paysage et 3 boutons de gestion des Ovnis. Elle implémente l'interface ActionListener pour réagir aux clics sur les boutons.
Ceci nous donne le code suivant :
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Carte1 extends Applet implements ActionListener {
Paysage pays;
Button rien;
Button neige;
Button pluie;
Nous installons les différents composants et nous indiquons que c'est l'applet qui répondra aux évènements générés par les boutons.
public void init() {
//image de fond
Image img=getImage(getCodeBase(),"paysage.jpg");
MediaTracker mt=new MediaTracker(this);
mt.addImage(img,1);
try {
mt.waitForID(1);
} catch (Exception e) {}
//composants
//le paysage
setLayout(new BorderLayout());
pays=new Paysage(img);
add(pays,BorderLayout.CENTER);
//les boutons dans un Panel
Panel p=new Panel();
add(p,BorderLayout.SOUTH);
rien=new Button("Stop");
rien.addActionListener(this);
p.add(rien);
neige=new Button("Neige");
neige.addActionListener(this);
p.add(neige);
pluie=new Button("Pluie");
pluie.addActionListener(this);
p.add(pluie);
}
Nous utilisons les méthodes start et stop de l'applet pour démarrer et terminer l'animation.
public void start() {
//démarrer l'animation
pays.startAnim();
}
public void stop() {
//stopper l'animation
pays.stopAnim();
}
La méthode actionPerformed permet de remplir ou de vider le tableau des Ovnis du paysage selon le bouton utilisé.
public void actionPerformed(ActionEvent e) {
//action des boutons
if (e.getSource()==rien) {
//on supprime les Ovnis
pays.resetObjs();
}
else if (e.getSource()==neige) {
pays.resetObjs();
//300 flocons
for(int i=0; i<300; i++) {
pays.ajouteObjet(new Flocon(pays.largeur,pays.hauteur));
}
}
else if (e.getSource()==pluie) {
pays.resetObjs();
//400 gouttes
for(int i=0; i<400; i++) {
pays.ajouteObjet(new Pluie(pays.largeur,pays.hauteur));
}
}
}
L'applet est prête à fonctionner. Il ne reste plus qu'à admirer de nouveau le résultat.