Le téléchargement transparent et l'exécution automatique posent des problèmes de sécurité, et c'est pour cela que les applets Java sont limitées dans certains domaines. Typiquement, une applet ne peut pas gérer de fichiers, ni ouvrir des connections réseau arbitraires.
<HTML>
<HEAD>
<TITLE>Exemple de page avec une applet</TITLE>
</HEAD>
<BODY>
<H1>Exemple d'applet</H1>
<applet code="appletExemple.class" width=100 height=50>
Votre browser ne supporte pas les applets !
</applet>
</BODY>
</HTML>
java.applet.Applet
. Cette classe contient les
méthodes nécessaires
à la gestion de l'applet, et à l'interaction de celle-ci avec son environnement
(browser).
Voyons les méthodes les plus importantes, que votre applet devra remplacer si nécessaire :
start()
. L'applet est également redémarrée après avoir été stoppée,
lorsqu'elle est à nouveau visible.
start()
de l'applet.
Graphics
et c'est la surface de dessin sur
laquelle on doit travailler.
import java.awt.*;
import java.applet.*;
public class applet1 extends Applet {
Font font;
public void init() {
font = new Font("TimesRoman",Font.PLAIN,20);
}
public void paint(Graphics g) {
g.setFont(font);
g.setColor(Color.red);
g.drawString("Je suis une applet !",0,font.getSize());
}
}
start()
, car
aucune tâche n'est effectuée en permanence. La seule chose que l'applet
fait est de se redessiner lorsque le browser le redemande
(paint(Graphics g)
).
Que se passe-t-il si l'on veut que l'applet ait une activité permanente ?
Toutes les applets s'exécutant dans browser utilisent la même
machine virtuelle Java. On ne peut donc pas créer une boucle dans la méthode
start()
pour effectuer une tâche, parce que l'on occuperait la
MV (machine virtuelle). Il faut donc créer un thread afin d'autoriser
l'exécution parallèle des multiples applets.
import java.awt.*;
public class applet2 extends java.applet.Applet implements Runnable {
Thread tache;
String lbl;
Font font;
boolean gris = false;
public void init() {
font = new java.awt.Font("TimesRoman", Font.PLAIN, 24);
lbl = getParameter("lbl");
}
public void paint(Graphics g) {
g.setFont(font);
if (gris)
g.setColor(Color.lightGray);
else
g.setColor(Color.black);
g.drawString(lbl, 0, font.getSize());
}
public void start() {
tache = new Thread(this);
tache.start();
}
public void stop() {
tache.stop();
}
public void run() {
while (true) {
try {
Thread.sleep(1000); // pause de 1 seconde
} catch (InterruptedException e) {}
gris = !gris;
repaint(); // on force le réaffichage
}
}
}
La page suivante vous expliquera le fonctionnement des événements.