Les Applets

publicité
Travaux pratiques en Java
Séance 5: Les Applets
Najib Tounsi
Une applet est un petit programme java qui s'exécute dans un navigateur. L'appel à une applet se fait daonc dans une page HTML (balises <applet></applet>
ou <object></object>). On peut aussi visualiser une applet par le programme appletviewer disponible avec les plateforme java.
1. Applets Bonjour.
Exemple 1: Une applet simple qui affiche un message
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.drawString("Hello world!", 50, 25);
}
};
Compiler normalement avec javac HelloWorld.java.
Créer le fichier HTML HelloWorld.html suivant:
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><title> Une simple applet </title></head>
<body>
<applet code="HelloWorld.class" width=200 height=100>
</applet>
</body>
</html>
La valeur de l'attribut code de la balise applet est le nom du fichier compilé HelloWorld.class correpondant à l'applet à lancer. On visualise l'applet dans un
navigateur Web ou par le programme appletviewer.
appletviewer HelloWorld.html
Résultat:
Noter...
Exemple 2: Une applet simple qui affiche un message avec décorations
import java.applet.Applet;
import java.awt.*;
// on utilise toutes les classes du package
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.setColor(Color.red);
//couleur de la fonte
int x = getSize().width;
//largeur de la zone d'affichage
int y = getSize().height;
//taille de la zone d'affichage
g.drawRect(0, 0, x - 1, y - 1);
// on entoure la zone par un rectangle
g.setFont(new Font("Monotype Corsiva", Font.PLAIN, 24));
g.drawString("Hello world!", x/4, y/2);
}
};
Résultat:
Noter...
Exemple 3: Une applete simple qui affiche un message en Arabe
import java.awt.*;
import java.applet.Applet;
public
class Salamate extends Applet {
public void paint(Graphics g){
char[] salam = new char[5];
salam[0]=1587;
// lettre Sin en Unicode
salam[1]=1604;
// lettre lam
salam[2]=1605;
// lettre mim
salam[3]=1575;
// lettre alif
salam[4]=1578;
// lettre tah
g.setFont(new Font("Traditional Arabic", Font.PLAIN, 25));
g.drawString(String.valueOf(salam), 20, 20);
}
}
Résultat:
Noter...
Exemple 4: Une applete simple qui affiche un message bidirectionnel ar/fr. L'arabe s'affichant de droite à gauche (right-to-left ou RTL). Java aplique
l'algorithme bidirectionnel d'Unicode.
import java.awt.*;
import java.applet.Applet;
public
class Salamate extends Applet {
public void paint(Graphics g){
char[] salam = new char[5];
salam[0]=1587;
// lettre Sin en Unicode
salam[1]=1604;
// lettre lam
salam[2]=1605;
// lettre mim
salam[3]=1575;
// lettre alif
salam[4]=1578;
// lettre tah
g.setFont(new Font("Traditional Arabic", Font.PLAIN, 25));
char[] yah = {1610,1575};
g.drawString(String.valueOf(salam) + " " +
String.valueOf(yah) +
" ali" + " baba ", 10, 45);
}
}
Résultat:
Noter:
1. La différence entre l'ordre du texte en mémoire (l'ordre de saisie des caractères, dit ordre logique,) et l'ordre du texte affiché (ordre visuel). En notant
en majuscule les mots arabes :
ordre physique en mémoire: SALMATE YA ali baba
ordre logique d'affichage: ali baba AY ETAMLAS
2. En outre, il y a deux notions à voir: le contexte globle d'affichage d'une texte bidi, et le passage directionnel (séquence de direction fixe). Ici, le contexte
globale est aussi RTL:
ali
baba
AY
ETAMLAS
---ltr---> <---rtl---<----- r t l ---------
deux passages directionnels différents, LTR et RTL
contexte globale d'affichage (ordre de lecture orale) est RTL
En remplaçant maintenant l'instruction g.drawString(...) précédente par (la chaîne commençant en français):
g.drawString("Hello " + String.valueOf(salam) + " " +
String.valueOf(yah) +
" ali" + " baba ", 10, 45);
on obtient :
où le contexte globale est cette fois-ci ltr.
Hello
AY
ETAMLAS
---->
<----------
ali
baba
--------->
------------ l t r ---------->
trois passages directionnels différents
le contexte globale d'affichage LTR
2. Applet complète.
Voici maintenant une applet plus complète avec les méthodes init(), start(), paint(), stop(), destroy(). L'effet est d'afficher un message qui permet de suivre la
thrace d'exécution de l'applet.
Version 1: affichage dans la zone de l'applet elle même.
import java.applet.Applet;
import java.awt.*;
public class TraceApplet extends
StringBuffer message;
public
}
public
}
public
}
public
}
public
Applet {
// message a afficher
void start() {
message.append(" starting");
void init(){
message = new StringBuffer(100);
message.append( " initializing");
void stop() {
message.append(" stoping");
void destroy() {
message.append( " destroying");
void paint(Graphics g){
message.append(" painting")
;
g.drawString(message.toString(), 10, 20);
}
}
Compiler et lancer l'applet. La réduire ensuite en icone, la rétablir, l'aggrandir, la couvrir et l'arrêter. Noter qu'avec destroy, le message n'est pas visible.
Version 2: affichage dans la zone de l'applet et sur le terminal de lancement.
On rajout l'instruction System.out.println("--même message--"); dans chaque méthode. On devrait voir
C:\APPLETS>appletviewer TraceApplet.html
initializing
starting
painting
stoping
starting
painting
painting
stoping
destroying
Notez que cette fois-ci on voir aussi le message finale destroying.
Exercice: mettre un compteur pour afficher le numéro d'occurrence de chaque message painting.
...painting 1 painting 2 stoping starting painting 3 painting 4 ...
That's all folks.
Téléchargement