Introduction aux applets (conteneurs) Une applet est une classe destinée à être chargée depuis une machine (serveur) et être exécutée sur une autre machine (client) ayant un navigateur. Une applet ne peut pas lire ou écrire dans le système de fichiers du client (sauf dans des répertoires prédéfinis) Une applet ne peut pas communiquer avec d'autres machines que celle depuis laquelle elle a été chargée. Une applet ne peut pas démarrer l'exécution de programmes sur le système du client Licence (DMI/FST Limoges)(TOB) 1 Introduction aux applets (conteneurs) Constructeur Applet() // généralement appelé par héritage Quelques méthodes void init() // exécutée au chargement de l'applet void start() // exécutée au demarrage de l'applet void stop() // exécutée à l'arrêt de l'applet void resize(Dimension) // redimensionne l'applet String getParameter(String) // paramêtre HTML (balise <applet>) Licence (DMI/FST Limoges)(TOB) 2 Introduction aux applets (conteneur) Exemple d'applet: // applet qui dessine un rectangle import java.awt.*; // paquetage graphique import java.applet.*; // paquetage applet public class ExpleApplet extends Applet { public void paint (Graphics g) { g.fillRect( 5,5,60,40); } // dessine un rectangle } Rem: L'applet hérite de la classe java.awt.Panel qui est un Component et sa principale activité est paint(), c'est pourquoi nous avons redéfini paint() dans l'applet. Licence (DMI/FST Limoges)(TOB) 3 Introduction aux applets (conteneurs) Compiler cette classe: javac ExpleApplet.java Pour exécuter cette applet, invoquer (référencer) le résultat de la compilation de cette classe depuis un fichier HTML qui sera interprété par un browser (navigateur). <html> <head> <title> Exemple d'applet </title> </head> <body> < applet code=ExpleApplet.class width=500 heigth=200 > </applet> </body> </html> Licence (DMI/FST Limoges)(TOB) 4 Introduction aux applets (conteneurs) Autre Exemple //utilisation d'une applet comme Container de libelles import java.awt.*; import java.applet.*; public class Libelles extends Applet { public void init() // exécuté par l'applet au chargement { add ( new Label( « à gauche par défaut »));// cadrage à gauche add ( new Label(« Au centre », Label.CENTER)); add ( new Label(« A droite», Label.RIGHT)); } public void paint( Graphics g) { g.drawString(« Exemples de libéllés », 10,150); } } Licence (DMI/FST Limoges)(TOB) 5 Introduction aux applets (conteneurs) Rem1: La méthode add() permet d'ajouter un composant (ici un libelle) au conteneur graphique (ici une applet). Il existe d'autres possibilités de mise en page du conteneur avec la méthode setLayout et les classes BorderLayout et GridLayout (FlowLayout par défaut hérité de Panel) Rem2: Le résultat de la compilation de la classe Libelles.java (applet Libelles.class) est à mettre dans un fichier HTML qui sera interprété par un navigateur (browser). Rem3: Cette applet est une variante du programme déjà vu avec pour Container un Frame et une procédure main() pour l'instanciation du Frame. La procédure init() est équivalente au constructeur du Frame. Les paramêtres de la méthode setSize de Frame sont remplacés par les paramêtres de la balise <applet> du fichier HTML. Licence (DMI/FST Limoges)(TOB) 6 Introduction aux applets (conteneurs) Compiler cette classe: javac Libelles.java Fichier HTML pour executer cette classe. <html> <head> <title> Exemple de Libelles </title> </head> <!-- équivalent à setTitle de Frame > <body> < applet code=Libelles.class width=500 heigth=200 > <!-- equivalent à setSize+setVisible de Frame > </applet> </body> </html> Licence (DMI/FST Limoges)(TOB) 7