Une applet est un programme Java destiné à fonctionner dans une page Web.
La principale différence d’avec un programme classique est que l’applet ne comporte pas de public static void main
, mais des méthodes événementielles.
Pour concevoir une applet, il faut créer une classe dérivée de la JApplet, elle-même fille de la classe Applet.
L’avantage de la JApplet est qu’elle provient du package Swing, dont les comportements ont été standardisés.
Ils sont reconnaissables à leur nom qui commence par J (JFrame, JButton, JTextField, JCheckBox, …)
Sur une plan technique, il s’agit d’une application Côté client.
Elle est envoyée par le serveur au client, au même titre qu’une page web ou une image.
Pour l’exécuter, le client doit disposer d’une machine virtuelle Java, et du plugin Java dans son navigateur.
Une applet ressemble un peu à un logiciel événementiel.
A défaut de public static void main
, elle commence son exécution par une méthode init(), sans paramètre.
Cette méthode n’est appelée qu’une seule fois, lors de l’initialisation de l’applet.
Ensuite, une applet dispose d’une méthode start(), qui est appelée lors du démarrage de l’appelet.
Réciproquement, une applet peut être stoppée par le navigateur. Par exemple, lorsque l’internaute quitte la page.
Elle exécute dans ce cas sa méthode stop()
Une applet peut être démarrée et arrêtée plusieurs fois au cours de son existence.
Par contre, sa méthode init() n’est exécutée qu’une seule fois, avant start().
La méthode paint(Graphics g) surcharge JApplet.paint(Graphics g)
Elle est appelée à chaque fois que l’applet doit être redessinée.
J’en déconseille l’usage, car elle travaille sur le même JPanel que les menus déroulants, avec lesquels elle se confond.
Je conseille plutôt de créer un JPanel et de l’importer dans le BorderLayout.center de l’applet.
Pour ensuite dessiner sur ce JPanel.
Pour tester votre applet, il n’est pas nécessaire de la déployer sur le web.
Eclipse vous propose une navigateur minimal : l’AppletViewer
AppletViewer est un navigateur qui ne reconnaît que un seul tag: <APPLET>, que nous verrons plus bas.
Eclipse a même la gentillesse de vous rédiger une page web minimale destinée à contenir l’applet lors de vos tests.
De sorte que vous n’ayez qu’à appuyer sur le bouton RUN (Ctrl-F11)
pour la démarrer comme une application ordinaire, en console ou dans une JFrame.
Rédiger une applet ne suffit pas. Il faut ensuite créer la page web qui l’accueille.
En cette page, vous insérerez l’applet un peu comme une image, au moyen du tag :
<APPLET></APPLET>
Ce tag comporte trois paramètres obligatoires : la source, la largeur et la hauteur de l’applet.
Car contrairement à une image, une applet n’a pas de dimensions intrinsèques.
C’est le navigateur qui les lui donne.
En définitive, l’insertion d’une applet se fait comme ceci :
<APPLET code="packAppletCalculette.class" width=800 height=600>
</APPLET>
Entre les deux tags, on peut adresser un message à l’internaute qui ne possède pas de machine virtuelle Java.
<APPLET code="packApplet.Calculette.class" width=800 height=600>
Vous devriez installer une machine virtuelle Java.<BR/>
<IMG src="…">
</APPLET>
Ce message sera affiché à défaut de l’applet.
Le paramètre code indique le chemin d’accès à la classe qui hérite de JApplet.
En l’espèce, elle est placée dans un répertoire du même nom que le package dans Eclipse : ici packApplet.
Attention, ce n’est pas un slash qui sépare le nom du répertoire de celui de l’applet, mais un point.
Placez toutes vos autres classes dans le même répertoire que l’applet.
Comme tout programme, une applet peut recevoir des paramètres à l’ouverture.
Dans une application java ordinaire, cela se fait en ligne de commande.
Les paramètres sont recueillis dans le tableau String args[]
passé en paramètres de la public static void main
.
Ici, c’est un peu différent.
La page d’accueil passe les paramètres à l’applet, qui les recueille.
Vous passez les paramètres grâce au tag PARAM, qui comporte deux attributs : name et value
<APPLET code="packApplet.Calculette.class" width=800 height=600>
<PARAM name="nom" value="Dupont"/>
<PARAM name="prenom" value="Lucie"/>
<PARAM name="taille" value="175"/>
Vous devriez installer une machine virtuelle Java.<BR/>
<IMG src="…">
</APPLET>
En PHP, une boucle recueille tous les paramètres de la barre d’adresse, pour les passer à l’applet :
<APPLET code="packApplet.Calculette.class" width=800 height=600>
<?php
foreach($_GET AS $clef=>$valeur)
{
echo('<PARAM name="'.$clef.'" value="'.$valeur.'"/>');
}
?>
Vous n’avez pas de machine virtuelle Java.<BR/>
<A href="http://www.java.com">Installez-en</A> une.
</APPLET>
Mais on peut aussi envisager une autre boucle qui parcourt le tableau $_POST, ou encore toute autre source.
Et voici le code source d’une applet qui explore les paramètres qu’on lui passe, pour afficher une string sur son JPanel.
Initialement, je pensais construire une calculatrice, pour finalement me contenter d’une applet qui comporte un menu et un JPanel.