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.