Un exemple d'applet

     

Cette page contient deux applets, une qui apparaît dans la page, et une autre qui est une fenêtre surgissante. Les deux applets sont des compteurs de secondes.

alt : l'applet n'est pas visible par votre navigateur (dans le menu Outils, Modules complémentaires, activer le plugin Java(TM) Platform SE 6 U32 6.0.320.5 s'il est désactivé)
alt : l'applet n'est pas visible par votre navigateur (dans le menu Outils, Modules complémentaires, activer le plugin Java(TM) Platform SE 6 U32 6.0.320.5 s'il est désactivé) L'applet décrite plus bas correspond à l'applet incluse dans la page. Au centre d'un petit cadre blanc, un entier donne le nombre de secondes écoulées depuis l'ouverture de l'applet ; ce compteur change de valeur toutes les secondes. Pour écrire une classe définissant une applet, on étend la classe javax.swing.JApplet.

Quatre méthodes de la classe JApplet (héritée de la classe Applet) sont particulièrement importantes :

  • la méthode init est exécutée au moment du chargement de la page HTML. Elle sert à faire toutes les initialisations ;
  • la méthode start est exécutée juste après la méthode init mais aussi à chaque fois qu'on revient à la page HTML de l'applet après l'avoir quittée ;
  • la méthode stop est exécutée quand on quitte la page HTML ; elle est le pendant de la méthode start ; il faut faire commencer ou recommencer par la méthode start ce qui est arrêté par la méthode stop ;
  • la méthode destroy est exécutée quand on ferme le navigateur ; il faudra l'utiliser par exemple pour interrompre un thread qui aurait été démarré par la méthode init. En général, il suffit de programmer la méthode init, il n'est pas utile de programmer les méthodes start, stop et destroy.
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JApplet;
    import javax.swing.JPanel;
    import javax.swing.Timer;

    @SuppressWarnings("serial")
    class Ardoise extends JPanel {
    private int heure = 1;
    private int taille;

    Ardoise(int taille) {
    this.taille = taille;
    setPreferredSize(new Dimension(200, 100));
    setBorder(BorderFactory.createLineBorder(Color.BLACK));
    setBackground(Color.WHITE);
    Font font = new Font("Courier", Font.PLAIN, taille);
    setFont(font);
    }

    public int getHeure() {
    return heure;
    }

    public void setHeure(int heure) {
    this.heure = heure;
    }

    public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawString(Long.toString(heure), getWidth()/2 - taille, getHeight()/2);
    }
    }

    @SuppressWarnings("serial")
    public class Compteur extends JApplet implements ActionListener {
    private Timer timer;
    private Ardoise ardoise;

    public void init() {
    ardoise = new Ardoise(Integer.parseInt(getParameter("taille")));
    setLayout(new FlowLayout(FlowLayout.CENTER));
    add(ardoise);
    timer = new Timer(1000, this);
    }

    public void start() {
    timer.restart();
    }

    public void stop() {
    timer.stop();
    }

    public void actionPerformed(ActionEvent e) {
    ardoise.setHeure(ardoise.getHeure() + 1);
    ardoise.repaint();
    }
    }

    Pour avoir la fenêtre surgissante, on peut remplace la méthode init ci-dessus par :
     public void init() {
    timer = new Timer(1000, this);
    ardoise = new Ardoise(Integer.parseInt(getParameter("taille")));
    JFrame fenetre = new JFrame();
    fenetre.setLayout(new FlowLayout(FlowLayout.CENTER));
    fenetre.add(ardoise);
    fenetre.pack();
    fenetre.setLocation(100, 100);
    fenetre.setVisible(true);
    }
    Vous pouvez accéder aà :