• Aucun résultat trouvé

Historique des versions

Partie 2 : Développement des interfaces graphiques

14. Les applets

Une appet est une programme Java qui s'éxécute dans un logiciel de navigation supportant java ou dans l'appletviewer du JDK.

Attention : il est recommandé de tester les applets avec l'appletviewer car les navigateurs peuvent prendre l'applet contenu dans leur cache plutôt que la dernière version compilée.

Le mécanisme d'initialisation d'une applet se fait en deux temps :

la machine virtuelle java instancie l'objet Applet en utilisant le constructeur par défaut 1.

la machine virtuelle java envoie le message init à l'objet Applet 2.

Ce chapitre contient plusieurs sections :

L'intégration d'applets dans une page HTML

Les méthodes des applets

Les interfaces utiles pour les applets

La transmission de paramètres à une applet

Applet et le multimédia

Applet et application (applet pouvant s'éxécuter comme application)

Les droits des applets

14.1. L'intégration d'applets dans une page HTML

Dans une page HTML, il faut utiliser le tag APPLET avec la syntaxe suivante :

<APPLET CODE=« Exemple.class » WIDTH=200 HEIGHT=300 > </APPLET>

Le nom de l'applet est indiqué entre guillement à la suite du parametre CODE.

Les paramètres WIDTH et HEIGHT fixent la taille de la fenêtre de l'applet dans la page HTML. L'unité est le pixel. Il est préférable de ne pas dépasser 640 * 480 (VGA standard).

Le tag APPLET peut comporter les attributs facultatifs suivants :

Tag Role

CODEBASE

permet de spécifier le chemin relatif par rapport au dossier de la page contenant l'applet. Ce paramètre suit le paramètre CODE.

Exemple : CODE=nomApplet.class CODEBASE=/nomDossier HSPACE et

VSPACE permettent de fixer la distance en pixels entre l'applet et le texte

ALT affiche le texte specifié par le parametre lorsque le navigateur ne supporte pas Java ou que son support est désactivé.

Le tag PARAM permet de passer des paramètres à l'applet. Il doit etre inclus entre les tags APPLET et /APPLET.

<PARAM nomParametre value=« valeurParametre »> </APPLET>

La valeur est toujours passée sous forme de chaine de caractères donc entourée de guillemets.

Exemple : <APPLET code=« Exemple.class » width=200 height=300>

Le texte contenu entre <APPLET> et </APPLET> est afficher si le navigateur ne supporte pas java.

14.2. Les méthodes des applets

Une classe dérivée de la classe java.applet.Applet hérite de méthodes qu'il faut redéfinir en fonction des besoins et doit être déclarée public pour fonctionner.

En général, il n'est pas nécessaire de faire un appel explicite aux méthode init(), start(), stop() et destroy() : le navigateur se charge d'appeler ces méthodes en fonction de l'état de la page HTML contenant l'applet.

14.2.1. La méthode init()

Cette méthode permet l'initialisation de l'applet : elle n'est éxécutée qu'une seule et unique fois après le chargement de l'applet.

14.2.2. La méthode start()

Cette méthode est appelée automatiquement après le chargement et l'initialisation (via la méthode init()) lors du premier affichage de l'applet.

14.2.3. La méthode stop()

Le navigateur appelle automatiquement la méthode lorsque l'on quitte la page HTML. Elle interrompt les traitements de tous les processus en cours.

14.2.4. La méthode destroy()

Elle est appelée après l'arrêt de l'applet ou lors de l'arret de la machine virtuelle. Elle libère les ressources et détruit les threads restants

14.2.5. La méthode update()

Elle est appelée à chaque rafraichissement de l'écran ou appel de la méthode repaint(). Elle efface l'écran et appelle la méthode paint(). Ces actions provoquent souvent des scintillements. Il est préférable de redéfinir cette méthode pour qu'elle n'efface plus l'écran :

Exemple :

public void update(Graphics g) { paint (g);}

14.2.6. La méthode paint()

Cette méthode permet d'afficher le contenu de l'applet à l'écran. Ce refraîchissement peut être provoqué par le navigateur ou par le système d'exploitation si l'ordre des fenêtres ou leur taille ont été modifiés ou si une fenêtre recouvre l'applet.

Exemple :

public void paint(Graphics g)

La méthode repaint() force l'utilisation de la méthode paint().

Il existe des méthodes dédié à la gestion de la couleur de fond et de premier plan

La méthode setBackground(Color), héritée de Component, permet de définir la couleur de fond d'une applet. Elle attend en paramètre un objet de la classe Color.

La méthode setForeground(Color) fixe la couleur d'affichage par défaut. Elle s'applique au texte et aux graphiques.

Les couleurs peuvent être spécifiées de 3 manières différentes :

utiliser les noms standard predéfinis

Color.nomDeLaCouleur

Les noms predéfinis de la classe Color sont : black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow

utiliser 3 nombres entiers représentant le RGB

(Red,Green,Blue : rouge,vert, bleu) Exemple :

Color macouleur = new Color(150,200,250);

setBackground (macouleur);

// ou setBackground(150,200,250);

utiliser 3 nombre de type float utilisant le systeme HSB

(Hue, Saturation, Brightness : teinte, saturation, luminance). Ce système est moins répandu que le RGB mais il permet notamment de modifier la luminance sans modifier les autres caractéristiques

Exemple :

setBackground(0.0,0.5,1.0);

dans ce cas 0.0,0.0,0.0 représente le noir et 1.0,1.0,1.0 représente le blanc.

14.2.7. Les méthodes size() et getSize()

L'origine des coordonnées en Java est le coin supérieur gauche. Elles s'expriment en pixels avec le type int.

La détermination des dimensions d'une applet se fait de la façon suivante : Exemple ( code java 1.0 ) :

Dimension dim = size();

int applargeur = dim.width;

int apphauteur = dim.height;

Avec le JDK 1.1, il faut utiliser getSize() à la place de size().

Exemple ( code java 1.1 ) :

public void paint(Graphics g) { super.paint(g);

Dimension dim = getSize();

int applargeur = dim.width;

int apphauteur = dim.height;

g.drawString("width = "+applargeur,10,15);

g.drawString("height = "+apphauteur,10,30);

}

14.2.8. Les méthodes getCodeBase() et getDocumentBase()

Ces méthodes renvoient respectivement l'emplacement de l'applet sous forme d'adresse Web ou de dossier et l'emplacement de la page HTML qui contient l'applet.

Exemple :

public void paint(Graphics g) { super.paint(g);

g.drawString("CodeBase = "+getCodeBase(),10,15);

g.drawString("DocumentBase = "+getDocumentBase(),10,30);

}

14.2.9. La méthode showStatus()

Affiche une message dans la barre de status de l'applet Exemple :

public void paint(Graphics g) { super.paint(g);

showStatus("message à afficher dans la barre d'état");

}

14.2.10. La méthode getAppletInfo()

Permet de fournir des informations concernant l'auteur, la version et le copyright de l'applet Exemple :

static final String appletInfo = " test applet : auteur, 1999 \n\nCommentaires";

public String getAppletInfo() { return appletInfo;

}

Pour voir les informations, il faut utiliser l'option info du menu Applet de l'appletviewer.

14.2.11. La méthode getParameterInfo()

Permet de fournir des informations sur les paramètres reconnus par l'applet Le format du tableau est le suivant :

{ {nom du paramètre, valeurs possibles, description} , ... } Exemple :

static final String[][] parameterInfo =

{ {"texte1", "texte1", " commentaires du texte 1" } , {"texte2", "texte2", " commentaires du texte 2" } };

public String[][] getParameterInfo() { return parameterInfo;

}

Pour voir les informations, il faut utiliser l'option info du menu Applet de l'appletviewer.

14.2.12. La méthode getGraphics()

Elle retourne la zone graphique d'une applet : utile pour dessiner dans l'applet avec des méthodes qui ne possèdent pas le contexte graphique en paramètres (ex : mouseDown ou mouseDrag).

14.2.13. La méthode getAppletContext()

Cette méthode permet l'accès à des fonctionnalités du navigateur.

14.2.14. La méthode setStub()

Cette méthode permet d'attacher l'applet au navigateur.

14.3. Les interfaces utiles pour les applets

14.3.1. L'interface Runnable

Cette interface fournit le comportement nécessaire à un applet pour devenir un thread.

Les méthodes start() et stop() de l'applet peuvent permettre d'arrêter et de démarrer un thread pour permettre de limiter l'usage des ressources machines lorsque la page contenant l'applet est inactive.

14.3.2. L'interface ActionListener

Cette interface permet à l'applet de répondre aux actions de l'utilisateur avec la souris La méthode actionPerformed() permet de définir les traitements associés aux événements.

Exemple ( code java 1.1 ) :

public void actionPerformed(ActionEvent evt) { ... }

Pour plus d'information, voir le chapitre Gestion des événements avec Java 1.1

14.3.3. L'interface MouseListener pour répondre à un clic de souris

Exemple ( code java 1.1 ) :

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

public class AppletMouse extends Applet implements MouseListener { int nbClick = 0;

public void init() { super.init();

addMouseListener(this);

}

public void mouseClicked(MouseEvent e) { nbClick++;

repaint();

}

public void mouseEntered(MouseEvent e) { }

public void mouseExited(MouseEvent e) { }

public void mousePressed(MouseEvent e) { }

public void mouseReleased(MouseEvent e) { }

public void paint(Graphics g) { super.paint(g);

Documents relatifs