11.    Les applets



La vocation d’une applet est d’être téléchargée sur une machine client à partir d’une machine distante (serveur) qui en fournit le code. Ce chargement est toujours provoqué par l’analyse d’un fichier contenant des commandes HTML (Hyper- Text Markup Language). Le bytecode de l’applet est téléchargé et exécuté localement dans la page Web par un navigateur qui implémente un interpréteur de bytecode.







11.1    Lancement d’une applet

La commande HTML qui lance une applet a trois paramètres obligatoires (la casse majuscules/minuscules des paramètres n’est pas significative) :

·         "code =" – le nom de fichier (.class) contenant les bytecodes de l’applet;

·         "width =" – largeur initiale de la fenêtre consacrée à l’applet (en pixels);

·         "height =" – hauteur initiale de la fenêtre consacrée à l’applet (en pixels).

<applet code = ex.class width = 200 height=250"> </applet>




11.2    Les méthodes concernées par la vie d’une applet

L'exécution d'une applet démarre avec la méthode:

public void init(){ ... }

Pendant les différentes phases d'exécution du programme le navigateur cherche à lancer les méthodes suivantes:

·         public void init() – après la création de l’objet applet;

·         public void start() – après init(), puis chaque fois quand l’applet redevient visible;

·         public void stop() – chaque fois que l’applet n’est plus visible, ainsi que avant destroy();

      public void destroy() – à la fin de l’exécution de l’applet

Exemple

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public
 class Appl1 extends Applet {
         JButton  b1, b2;
         B1 bls = new B1();
         JTextField  t;
         boolean showBt2=true;
         public
 void init() {
                t = new JTextField("Click Bt1 to hide Bt2",10);
                b1 = new JButton("Bt1");
                b2 = new JButton("Bt2");
                b1.addActionListener(bls);
                add(t);
                add(b1);
                add(b2);
         }
         class B1 implements ActionListener {
                public
 void actionPerformed(ActionEvent e) {
                      if
(showBt2){
                            remove(b2);
                            showBt2=false;
                            t.setText("Click Bt1 to show Bt2");
                            repaint();
                      }
                      else {
                            add(b2);     
                           
showBt2=true;
                            t.setText("Click Bt1 to hide Bt2");
                           
repaint();
                      }
                }
         }
}


11.3    Transmission d’informations à une applet

Fichier html:

<applet code = TestPar.class width=200 height=200><param name=size value=6></applet>

import java.applet.Applet;
import javax.swing.*;
public class TestPar extends Applet {
    JTextField t;
    public void init(){
        t = new JTextField("Param: ",12);
        add(t);
        int size = Integer.parseInt(getParameter("size"));
        int len = Integer.parseInt(getParameter("width"));
        t.setText("Param: "+size+" len: "+len);
    }
}



11.4    Restrictions imposées aux applets


11.5    Les avantages d'un applet



11.6    Transformation un applet en une application graphique

Supposons que nous avons un applet – Appl1.class et un fichier HTML qui contient la commande:

 <applet code=Appl1.class width=300 height=150>  </applet>

La transformation vers une application doit se faire selon le schéma suivant :


import javax.swing.*;
import java.applet.Applet;
public class Application {
    public static void main(String[] args) {
        Applet applet = new Appl1();
        JFrame frame = new JFrame("App");
        frame.add(applet);
        frame.setSize(300,150);
        applet.init();
        applet.start();
        frame.setVisible(true);
        frame.setDefaultCloseOperation      (JFrame.EXIT_ON_CLOSE);
    }     
}


11.7    Audio et vidéo dans les applets

Supposons que dans le répertoire se trouvent l’applet – Test.class, un fichier audio - spacemusic.au, (possibles formats AIFC, AIFF, AU, SND et WAVE) une image C0.jpg (GIF, PNG, JPEG, BMP, et WBMP sont possibles) et un fichier HTML qui contient la commande:

 <applet code=Appl1.class width=200 height=200>  </applet>



import java.applet.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Test extends Applet{
    Image n;
    JButton ply,stp;
    AudioClip ding,fond;
    int valueX=60,valueY=50;      
    public void init(){
        n = getImage(getCodeBase(), "C0.jpg"); 
        setLayout(new FlowLayout());
        fond=getAudioClip(getCodeBase(),"spacemusic.au");
        ply=new JButton("Play");
        stp=new JButton("Stop");
        ply.addActionListener(new SpPlay());
        add(ply);
        stp.addActionListener(new SpStop());
        add(stp);
    }

    class SpPlay implements ActionListener {
        public void actionPerformed(ActionEvent e){
            fond.loop();
        }
    }

    class SpStop implements ActionListener {
        public void actionPerformed(ActionEvent e){
            fond.stop();
        }
    }

    public void paint(Graphics g) {
        g.drawImage(n, valueX, valueY,90,90, this);
    }

}