Il est temps maintenant de faire votre première applet.
Vous allez voir que c'est très simple et que ça ressemble beaucoup à ce que vous avez fait jusque-là. En fait, c'est quasiment identique à une exception près :
un applet n'a pas de constructeur mais elle utilise la méthode init()
de la super-classe Applet du package awt ou JApplet du package swing.
Codage de l'applet
Nous allons faire un applet avec un code minimal, disons un label et un bouton. Lors du clic sur
bouton, nous afficherons le nombre de clics effectués. Rien de bien méchant. Créez un nouveau projet avec une classe
FirstApplet héritée de
JApplet.
Voici le code source de votre première applet :
Code : Java 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
public class FirstApplet extends JApplet {
private JLabel label = new JLabel();
private JButton bouton = new JButton("Cliquez");
private int count = 0;
/**
* Méthode d'initialisation de l'applet
* C'est cette méthode qui fait office de constructeur
*/
public void init(){
this.setSize(300, 80);
//On centre le texte du JLabel et on écrit en bleu...
label.setHorizontalAlignment(JLabel.CENTER);
//C'est plus zoli.
label.setForeground(Color.blue);
//Allez, une classe anonyme... Just for the fun ;)
this.bouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
label.setText("Vous avez cliqué " + (++count) + " fois sur le bouton");
}
});
//On ajoute nos composants
this.getContentPane().add(bouton, BorderLayout.SOUTH);
this.getContentPane().add(label, BorderLayout.NORTH);
//Et le tour est joué !
}
}
|
Avant de vous lancer dans le test de cette première applet, vous devez savoir tout de même que, mis à part quelques méthodes comme
setTitle("Animation")
,
setLocationRelativeTo(null)
et quelques autres propres aux objets
JFrame, les applets s'utilisent de la même manière. Bien sûr, avec la méthode
public void init()
à la place d'un constructeur !
Maintenant, avant d'intégrer votre programme dans une page web, vous devez vous assurer que celui-ci fonctionne correctement.
Comment on fait ça ? Tu nous a dit que les applets étaient utilisées dans des pages web...
Je maintiens, mais Eclipse vous propose un moyen d'exécuter votre classe comme un applet.
Pour faire cela, faites un clic droit sur votre fichier puis choisissez "
Run as" et enfin choisissez "
Java Applet", comme ceci :
Vous pouvez voir, ébahis, le résultat de votre applet :
Vous avez un indicateur vous signalant si votre applet est lancé ou non. Si vous voyez le message : "Applet not inited", ça veut dire qu'une erreur s'est glissée dans votre code et que la JVM n'a pas pu initialiser l'applet !
Insertion dans une page HTML
Pour que votre navigateur sache que la ressource à utiliser est un applet Java, vous devez utiliser la balise HTML
<applet></applet>
.
Celle-ci peut prendre plusieurs attributs et vous pouvez même passer des paramètres à votre applet grâce à cette balise.
Voici la liste des paramètres que peut prendre la balise
<applet></applet>
:
- name="FirstAnimation"
: nom de l'applet, ici FirstAnimation
. Nous allons vite voir l'intérêt de cet attribut ;
- width="300px"
: largeur de l'applet affiché, ici, 300 pixels ;
- height="300px"
: hauteur de l'applet affiché ;
- codebase="class/"
: l'URL de base pour l'applet, c'est-à-dire l'endroit où le navigateur peut trouver les fichiers .class ; ici, les fichiers sont dans le dossier class à côté de votre fichier HTML ;
- code="FirstAnimation.class"
: fichier de classe de l'applet. Celui où se trouve la méthode init()
;
- archive="plugin.jar"
: identifie les ressources à pré-charger (.jar, images...) ; ici, nous pré-chargeons une archive Java appelée plugin.jar ;
- alt="Please Wait..."
: affiche un texte au cours du chargement ;
- hspace="10px"
: espacement horizontal entre l'applet et un autre contenu (div
ou autre bloc HTML...) ;
- vspace="20px"
: idem que précédemment mais pour l'espacement vertical.
Pfiou... Il y en a des attributs pour cette balise...
Voici donc un exemple de balise applet :
Code : HTML1
2
3
4 | <applet name="FirstAnimation" codebase="class/" code="FirstAnimation.class"
height="300px" width="300px" archive="plugin.jar">
<param name="message" value="Message pour les ZérOs">
</applet>
|
Heu...
On comprend bien tout mais, qu'est-ce que c'est que ce truc :
<param name="message" value="Message pour les ZérOs">
?
Je vous ai dit que vous pouviez passer des paramètres à votre applet. Eh bien c'est comme ceci que nous allons nous y prendre !

Ceci veut dire que nous pourrons utiliser la méthode
getParameter(String paramName);
qui va nous renvoyer un
String correspondant à l'attribut
value de la balise. Ici, on aurait
this.getParameter("message")//Retourne : Message pour les ZérOs.
Tenez, nous allons essayer ça ! Ajoutez ceci dans votre méthode
init()
:
System.out.println("Paramètre passé via la balise <param> : " + this.getParameter("message"));
.
Lancez votre applet et :
Ah oui ! Si vous ne spécifiez pas de paramètre pour votre applet, ledit paramètre vaut
null.
Voici comment on procède pour spécifier un paramètre pour votre application. Déjà, faites un clic droit sur votre fichier puis allez dans
Propriétés.
Ensuite, cliquez sur "
Run/Debug settings" puis sur le fichier correspondant à votre applet et enfin sur "
Edit", comme ceci :
Dans la fenêtre dans laquelle vous êtes maintenant, choisissez l'onglet "
parameter".
Vous arrivez enfin à l'endroit où vous pouvez ajouter des paramètres. Cliquez sur "
Add", comme ceci :
Et enfin, renseignez le nom de votre paramètre ainsi que sa valeur :
Cliquez sur "
Ok" sur toutes les fenêtres que vous avez ouvertes et relancez votre applet, le paramètre s'affiche enfin !
Vous pouvez maintenant incorporer votre applet dans une page HTML.
Voici le code de ladite page :
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12 | <html>
<body style="margin:auto;">
<div style="width:320px;margin:auto;margin-top:100px;border:5px solid black">
<applet codebase="class/" code="FirstApplet.class" height="80" width="300" hspace="10" vspace="10">
<param name="message" value="Message pour les ZérOs">
</applet>
</div>
</body>
</html>
|
J'ai créé ce code et enregistré le fichier contenant ce code HTML sur mon bureau, j'ai donc dû déplacer mes fichiers .class - oui, vous ne rêvez pas, j'ai dit :
mes fichiers .class - dans un dossier, que j'ai appelé "
class" pour l'occasion (cf. paramètre codebase de l'applet)...
J'ai récupéré mes fichiers .class dans le répertoire
/bin de votre projet, et vous pouvez voir que vous avez
FirstApplet.class et
FirstApplet$1.class dans le cas où vous avez exactement le même code que moi.
À quoi ça correspond ?
En fait,
FirstApplet.class correspond à la compilation de votre classe
FirstApplet et
FirstApplet$1.class correspond à la compilation de votre classe anonyme ! Pas de nom pour cette classe, donc la JVM remplace le nom par "
$1". Si vous aviez utilisé une classe interne, appelons-la
BoutonListener et si vous compiliez le code, vous auriez toujours
FirstApplet.class, mais vous auriez eu le fichier
FirstApplet$BoutonListener.class.
Donc, si vous avez créé votre page web ailleurs que dans votre dossier contenant votre projet, vous devrez déplacer tous les fichiers .class commençant par
FirstApplet et toutes les autres ressources que votre applet utilise (images, autres classes, archives Java...).
Maintenant que toute la lumière est faite sur ce point, vous pouvez aller voir votre première applet :
ici.
Il faut que vous sachiez que, si Eclipse est assez laxiste pour lancer l'applet même si le paramètre "message" n'est pas renseigné, votre navigateur, enfin la JVM de votre navigateur sera moins conciliante... Si le paramètre est manquant, l'applet plantera !
Voilà, vous venez de faire votre première applet ! Alors, heureux ?
Nota Bene
Avant de continuer, vous devez savoir une dernière chose, ceci ne concerne pas directement Java mais la balise
<applet></applet>
.
En fait, depuis la sortie de HTML 4.0, la balise
<applet></applet>
est dépréciée par le
W3C, c'est-à-dire que cet organisme préconise l'utilisation de la balise
<object></object>
.
Ceci en grande partie à cause de
IE qui gérait le Java avec sa propre JVM (version 1.1, c'est vieux...) et non celle de Sun Microsystems (bientôt 1.7...). Il faut, afin que la balise
<applet></applet>
fonctionne correctement sous IE, avoir installé un environnement Java et s'assurer que IE utilise celui-ci pour interpréter du Java... (cf. plus haut).
Je ne détaillerai pas l'utilisation de cette balise vu que Sun Microsystems recommande l'utilisation de la balise
<applet></applet>
... Voici tout de même un exemple d'utilisation de la balise
<object></object>
:
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | <!-- L'Utilisation des commentaires conditionnels propres à IE sont à utiliser -->
<!-- car même si IE requiert l'utilisation de cette balise, il ne l'interprète pas comme les autres -->
<!--[if IE]>
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="300" height="80" name="FirstApplet">
<param name="java_code" value="FirstApplet.class" />
<param name="java_codebase" value="class/" />
<param name="type" value="application/x-java-applet;version=1.5" />
<![endif]-->
<p>
<object classid="java:FirstApplet.class"
codebase="class"
type="application/x-java-applet"
width="300" height="80">
<param name="code" value="FirstApplet" />
<!-- Safari a besoin de ces paramètres -->
<param name="JAVA_CODEBASE" value="class" />
<param name="BGCOLOR" value="000000" />
<param name="TEXTCOLOR" value="FF0000" />
<param name="TEXT" value="Test :-)" />
<param name="SPEED" value="250" />
<param name="RANDOMCOLOR" value="1" />
alt : <a href="class/FirstApplet.class">FirstApplet.class</a>
</object>
</p>
|
Il est grand temps de voir comment notre page web peut interagir avec notre applet...

Go !