Vous êtes ici :
Accueil Cours Programmations La Programmation Orientée Objet en Java Principes de base des applets

La Programmation Orientée Objet en Java : Principes de base des applets

Une applet est un programme Java qui s'exécute dans un navigateur Web. Une applet peut être une application Java entièrement fonctionnelle car elle dispose de l'API Java complète à sa disposition.

Il existe des différences importantes entre une applet et une application Java autonome, y compris les suivantes:

  • Une applet est une classe Java qui étend la classe java.applet.Applet.
  • Une méthode main ( ) n'est pas invoquée sur une applet, et une classe d'applet ne définira pas main().
  • Les applets sont conçus pour être intégrés dans une page HTML.
  • Lorsqu'un utilisateur affiche une page HTML contenant une applet, le code de l'applet est téléchargé dans la machine de l'utilisateur.
  • Une JVM est nécessaire pour afficher une applet. La JVM peut être soit un plug-in du navigateur Web, soit un environnement d'exécution distinct.
  • La JVM sur la machine de l'utilisateur crée une instance de la classe d'applet et invoque diverses méthodes pendant la durée de vie de l'applet.
  • Les Applets ont des règles de sécurité strictes qui sont appliquées par le navigateur Web. La sécurité d'une applet est souvent appelée sécurité sandbox, en comparant l'applet à un enfant jouant dans un bac à sable avec différentes règles qui doivent être suivies.
  • D'autres classes dont l'applet nécessite peuvent être téléchargées dans un seul fichier Java Archive (JAR).

Cycle de vie d'une applet

Quatre méthodes dans la classe Applet vous donnent le cadre sur lequel vous créez une applet sérieuse:

  • init : cette méthode est destinée à toute initialisation requise pour votre applet. Il est appelé après que les balises param dans l'étiquette de l'applet ont été traitées.
  • start : cette méthode est automatiquement appelée après que le navigateur appelle la méthode init. Il est également appelé chaque fois que l'utilisateur retourne à la page contenant l'applet après avoir quitté d'autres pages.
  • stop : cette méthode est automatiquement appelée lorsque l'utilisateur sort de la page sur laquelle l'applet se trouve. Il peut donc être appelé à plusieurs reprises dans la même applet.
  • destroy : Cette méthode n'est appelée que lorsque le navigateur s'arrête normalement. Parce que les applets sont destinés à vivre sur une page HTML, vous ne devez généralement pas laisser de ressources après qu'un utilisateur quitte la page contenant l'applet.
  • paint : Appelé immédiatement après la méthode de start(), et aussi chaque fois que l'applet doit se repeindre dans le navigateur. La méthode paint( ) est réellement héritée de java.awt .

Une Applet «Hello, World»

Voici une applet nommée HelloWorldApplet.java:

import java.applet.*;
import java.awt.*;

public class HelloWorldApplet extends Applet
{
   public void paint (Graphics g)
   {
      g.drawString ("Hello World", 25, 50);
   }
}

Ces déclarations d'importation apportent les classes dans la portée de notre classe d'applet:

  • java.applet.Applet.
  • java.awt.Graphics.

Sans ces déclarations d'importation, le compilateur Java ne reconnaitrait pas les classes Applet et Graphics, auxquelles se réfère la classe d'applet.

La classe Applet

Chaque applet est une extension de la classe java.applet.Applet. La classe Applet de base fournit des méthodes qu'une classe Applet dérivée peut appeler pour obtenir des informations et des services à partir du contexte du navigateur.

Ceux-ci incluent des méthodes qui font ce qui suit:

  • Obtenir des paramètres d'applet
  • Obtenir l'emplacement du réseau du fichier HTML contenant l'applet
  • Obtenir l'emplacement du réseau du répertoire de la classe d'applet
  • Afficher un message d'état dans le navigateur
  • Obtenir une image
  • Obtenir un clip audio
  • Jouer un clip audio
  • Redimensionner l'applet

En outre, la classe Applet fournit une interface par laquelle la visionneuse ou le navigateur obtient des informations sur l'applet et contrôle l'exécution de l'applet. Le spectateur peut:

  • Demander des informations sur l'auteur, la version et les droits d'auteur de l'applet
  • Demande une description des paramètres que l'applet reconnaît
  • Initialiser l'applet
  • Détruire l'applet
  • Démarrer l'exécution de l'applet
  • Arrête l'exécution de l'applet

La classe Applet fournit des implémentations par défaut de chacune de ces méthodes. Ces implémentations peuvent être remplacées si nécessaire.

L'applet «Hello, World» est complète tel quel. La seule méthode redéfinie est la méthode paint().

Appel d'une applet

Une applet peut être invoquée en intégrant des directives dans un fichier HTML et en affichant le fichier via une visionneuse d'applet ou un navigateur compatible Java.

La balise <applet> est la base pour intégrer une applet dans un fichier HTML. Voici un exemple qui invoque l'applet "Hello, World":

<html>
<title>The Hello, World Applet</title>
<hr>
<applet code="HelloWorldApplet.class" width="320" height="120">
If your browser was Java-enabled, a "Hello, World"
message would appear here.
</applet>
<hr>
</html>

L'attribut de code de la balise <applet> est requis. Il spécifie la classe Applet à exécuter. La largeur et la hauteur sont également nécessaires pour spécifier la taille initiale du panneau dans lequel une applet s'exécute. La directive de l'applet doit être fermée avec une balise </applet>.

Si une applet prend des paramètres, des valeurs peuvent être transmises aux paramètres en ajoutant des balises <param> entre <applet> et </applet>. Le navigateur ignore le texte et les autres balises entre les balises de l'applet.

Les navigateurs non compatibles avec Java ne traitent pas <applet> et </applet>. Par conséquent, tout ce qui apparaît entre les balises, non liées à l'applet, est visible dans les navigateurs non compatibles avec Java.

Le visualiseur ou le navigateur recherche le code Java compilé à l'emplacement du document. Pour spécifier autrement, utilisez l'attribut codebase de la balise <applet> comme indiqué:

<applet codebase="http://amrood.com/applets"
code="HelloWorldApplet.class" width="320" height="120">

Si une applet réside dans un paquetage autre que la valeur par défaut, le paquetage d'attente doit être spécifié dans l'attribut de code en utilisant le caractère point (.) Pour séparer les composants de paquetage/classe. Par exemple:

<applet code="mypackage.subpackage.TestApplet.class"
           width="320" height="120">

 L'exemple suivant illustre comment faire correspondre une applet aux paramètres de configuration spécifiés dans le document. Cette applet affiche un motif de damier en noir et une seconde couleur.

La deuxième couleur et la taille de chaque carré peuvent être spécifiées comme paramètres de l'applet dans le document.

CheckerApplet obtient ses paramètres dans la méthode init( ). Il peut également obtenir ses paramètres dans la méthode paint( ). Cependant, obtenir les valeurs et enregistrer les paramètres une fois au début de l'applet, au lieu de chaque rafraîchissement, est pratique et efficace.

La visionneuse ou le navigateur d'applet appelle la méthode init( ) de chaque applet qu'elle exécute. La visionneuse appelle init( ) une fois, immédiatement après avoir chargé l'applet. (Applet.init ( ) est implémenté pour ne rien faire.) Remplacez l'implémentation par défaut pour insérer un code d'initialisation personnalisé.

La méthode Applet.getParameter( ) récupère un paramètre compte tenu du nom du paramètre (la valeur d'un paramètre est toujours une chaîne). Si la valeur est numérique ou d'autres données non personnelles, la chaîne doit être analysée.

Voici un squelette de CheckerApplet.java:

import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
   int squareSize = 50;// initialized to default size
   public void init () {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

//Here are CheckerApplet's init() and private parseSquareSize() methods:

public void init ()
{
   String squareSizeParam = getParameter ("squareSize");
   parseSquareSize (squareSizeParam);
   String colorParam = getParameter ("color");
   Color fg = parseColor (colorParam);
   setBackground (Color.black);
   setForeground (fg);
}

private void parseSquareSize (String param)
{
   if (param == null) return;
   try {
      squareSize = Integer.parseInt (param);
   }
   catch (Exception e) {
     // Let default value remain
   }
}

 L'applet appelle parseSquareSize( ) pour analyser le paramètre squareSize . ParseSquareSize( ) appelle la méthode de la bibliothèque Integer.parseInt(), qui analyse une chaîne et renvoie un entier. Integer.parseInt ( ) lance une exception chaque fois que son argument est invalide.

Par conséquent, parseSquareSize( ) capture des exceptions, plutôt que de permettre à l'applet d'échouer lors d'une mauvaise entrée.

L'applet appelle parseColor( ) pour analyser le paramètre de couleur dans une valeur de couleur. ParseColor( ) fait une série de comparaisons de chaînes pour correspondre à la valeur du paramètre au nom d'une couleur prédéfinie. Vous devez implémenter ces méthodes pour que cette applet fonctionne.

Spécification des paramètres de l'applet

Voici un exemple de fichier HTML avec CheckerApplet intégré. Le fichier HTML spécifie les deux paramètres de l'applet au moyen de la balise <param>.

<html>
<title>Checkerboard Applet</title>
<hr>
<applet code="CheckerApplet.class" width="480" height="320">
<param name="color" value="blue">
<param name="squaresize" value="30">
</applet>
<hr>
</html>

 Remarque: Les noms de paramètres ne sont pas sensibles à la casse.

Conversion d'application sur les applets

Il est facile de convertir une application Java graphique (c'est-à-dire une application qui utilise l'AWT) dans une applet que vous pouvez intégrer dans une page Web.

Voici les étapes spécifiques pour convertir une application en une applet.

  • Créez une page HTML avec la balise appropriée pour charger le code de l'applet.
  • Fournir une sous-classe de la classe JApplet. Faites de cette classe publique. Sinon, l'applet ne peut pas être chargé.
  • Éliminez la méthode principale dans l'application. Ne pas construire une fenêtre de cadre pour l'application. Votre application sera affichée dans le navigateur.
  • Déplacez tout code d'initialisation du constructeur de la fenêtre de trame à la méthode d’initialisation de l'applet. Vous n'avez pas besoin de construire explicitement l'objet de l’applet. Le navigateur l'instancie pour vous et appelle la méthode d’initialisation.
  • Supprimez l'appel à setSize ; Pour les applets, le calibrage est effectué avec les paramètres de largeur et de hauteur dans le fichier HTML.
  • Supprimez l'appel à setDefaultCloseOperation. Une applet ne peut pas être fermée; Il se termine quand le navigateur sort.
  • Si l'application appelle setTitle, supprimez l'appel à la méthode. Les applets ne peuvent pas avoir de barres de titre. (Vous pouvez, bien sûr,  mettre le titre de la page Web elle-même, en utilisant la balise de title HTML.)
  • N'appelez pas setVisible(true). L'applet s'affiche automatiquement.

Gestion des événements

Les Applets héritent d'un groupe de méthodes de traitement d'événements de la classe Container. La classe Container définit plusieurs méthodes, telles que processKeyEvent et processMouseEvent, pour traiter des types particuliers d'événements, puis une méthode catch-all appelée processEvent.

Pour réagir à un événement, une applet doit remplacer la méthode appropriée spécifique à l'événement.

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;

public class ExampleEventHandling extends Applet implements MouseListener {
    StringBuffer strBuffer;
    public void init() {
        addMouseListener(this);
        strBuffer = new StringBuffer();
        addItem("initializing the apple ");
    }

    public void start() {
        addItem("starting the applet ");
    }

    public void stop() {
        addItem("stopping the applet ");
    }

    public void destroy() {
        addItem("unloading the applet");
    }

    void addItem(String word) {
        System.out.println(word);
        strBuffer.append(word);
        repaint();
    }

    public void paint(Graphics g) {
        //Draw a Rectangle around the applet's display area.
        g.drawRect(0, 0,
                  getWidth() - 1,
                  getHeight() - 1);

        //display the string inside the rectangle.
        g.drawString(strBuffer.toString(), 10, 20);
    }

  
    public void mouseEntered(MouseEvent event) {
    }

    public void mouseExited(MouseEvent event) {
    }

    public void mousePressed(MouseEvent event) {
    }

    public void mouseReleased(MouseEvent event) {
    }

    public void mouseClicked(MouseEvent event) {
        addItem("mouse clicked!");
    }
}

 Maintenant, appelons cette applet comme suit:

<html>
<title>Event Handling</title>
<hr>
<applet code="ExampleEventHandling.class"
width="300" height="300">
</applet>
<hr>
</html>

 Initialement, l'applet affiche " initializing the applet. Starting the applet ". Ensuite, une fois que vous cliquez sur le rectangle " mouse clicked " sera également affiché.

Affichage d'images

Une applet peut afficher des images du format GIF, JPEG, BMP et autres. Pour afficher une image dans l'applet, vous utilisez la méthode drawImage ( ) trouvée dans la classe java.awt.Graphics.

Voici l'exemple montrant toutes les étapes pour afficher les images:

import java.applet.*;
import java.awt.*;
import java.net.*;
public class ImageDemo extends Applet
{
  private Image image;
  private AppletContext context;
  public void init()
  {
      context = this.getAppletContext();
      String imageURL = this.getParameter("image");
      if(imageURL == null)
      {
         imageURL = "java.jpg";
      }
      try
      {
         URL url = new URL(this.getDocumentBase(), imageURL);
         image = context.getImage(url);
      }catch(MalformedURLException e)
      {
         e.printStackTrace();
         // Display in browser status bar
         context.showStatus("Could not load image!");
      }
   }
   public void paint(Graphics g)
   {
      context.showStatus("Displaying image");
      g.drawImage(image, 0, 0, 200, 84, null);
      g.drawString("www.javalicense.com", 35, 100);
   } 
}

Maintenant, appelons cette applet comme suit:

<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="300" height="200">
<param name="image" value="java.jpg">
</applet>
<hr>
</html>

Lecture audio

Une applet peut lire un fichier audio représenté par l'interface AudioClip dans le paquetage java.applet. L'interface AudioClip comporte trois méthodes, dont:

  • public void play(): joue le clip audio une fois, dès le début.
  • public void loop(): provoque l'affichage continu du clip audio.
  • public void stop(): Arrête de lire le clip audio.

Pour obtenir un objet AudioClip, vous devez appeler la méthode getAudioClip( ) de la classe Applet. La méthode getAudioClip( ) retourne immédiatement, que l'URL soit ou non résolue à un fichier audio réel. Le fichier audio n'est pas téléchargé jusqu'à ce qu'une tentative soit faite pour lire le clip audio.

Voici l'exemple montrant toutes les étapes pour lire un audio:

import java.applet.*;
import java.awt.*;
import java.net.*;

public class AudioDemo extends Applet
{
   private AudioClip clip;
   private AppletContext context;
   public void init()
   {
      context = this.getAppletContext();
      String audioURL = this.getParameter("audio");
      if(audioURL == null)
      {
         audioURL = "default.au";
      }

      try
      {
         URL url = new URL(this.getDocumentBase(), audioURL);
         clip = context.getAudioClip(url);
      }catch(MalformedURLException e)
      {
         e.printStackTrace();
         context.showStatus("Could not load audio file!");
      }
   }

   public void start()
   {
      if(clip != null)
      {
         clip.loop();
      }
   }

   public void stop()
   {
      if(clip != null)
      {
         clip.stop();
      }
   }
}

Maintenant, appelons cette applet comme suit:

<html>
<title>The AudioDemo applet</title>
<hr>
<applet code="AudioDemo.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet>
<hr>
</html>

 Vous pouvez utiliser votre test.wav sur votre PC pour tester l'exemple ci-dessus.




Vous êtes ici :
Accueil Cours Programmations La Programmation Orientée Objet en Java Principes de base des applets