Notions de base sur les applets Java


Une applet est un programme Java. Il s'exécute généralement dans un navigateur Web compatible Java. Parce qu'elle prend entièrement en charge l'API Java, l'applet est une application Java complète.

Voici les différences importantes entre les applications Java autonomes et les applets :

  • La classe applet en Java hérite de la classe java.applet.Applet

  • La classe Applet ne définit pas main(), donc un programme Applet n'appellera pas la méthode main(),

  • Les applets sont conçues pour être intégrées dans une page HTML.

  • Lorsqu'un utilisateur parcourt une page HTML contenant une applet, le code de l'applet est téléchargé sur la machine de l'utilisateur.

  • Pour afficher une applet, il faut une JVM. La JVM peut être un plug-in pour un navigateur Web ou un environnement d'exécution autonome.

  • La JVM sur la machine de l'utilisateur crée une instance de la classe applet et appelle diverses méthodes au cours du cycle de vie de l'applet.

  • Les applets ont des règles de sécurité strictes appliquées par les navigateurs Web. Le mécanisme de sécurité des applets est appelé sécurité sandbox.

  • D'autres classes requises par l'applet peuvent être téléchargées sous forme de fichiers d'archive Java (JAR).


Le cycle de vie d'Applet

Les quatre méthodes de la classe Applet vous fournissent un cadre sur lequel vous pouvez développer de petits programmes :

  • init : Le but de cette méthode est de fournir toute initialisation requise pour votre applet. Cette méthode est appelée après le traitement de la balise param dans la balise Applet.

  • start : Cette méthode est automatiquement appelée après que le navigateur a appelé la méthode init. Cette méthode est appelée chaque fois que l'utilisateur revient à la page contenant l'applet depuis une autre page.

  • stop :Cette méthode est automatiquement appelée lorsque l'utilisateur supprime de la page contenant l'applet. La méthode peut donc être appelée à plusieurs reprises dans la même applet.

  • destroy : Cette méthode n'est appelée que lorsque le navigateur est fermé normalement. Étant donné que les applets ne sont valides que sur les pages HTML, vous ne devriez manquer aucune ressource après que l'utilisateur quitte la page contenant l'applet

  • paint: Cette méthode démarre ( ) La méthode est appelée immédiatement après, ou lorsque l'applet doit être redessinée dans le navigateur. La méthode paint() hérite en fait de java.awt.


Applet "Hello, World" :

Ce qui suit est un simple programme d'applet 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 instructions d'importation seront Les classes suivantes sont importées dans notre classe applet :

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

Sans ces instructions d'importation, le compilateur Java ne peut pas reconnaître les classes Applet et Graphics.


Classe Applet

Chaque applet est une sous-classe de la classe java.applet.Applet La classe Applet de base fournit des méthodes que les classes dérivées doivent appeler pour obtenir les informations et les services du navigateur.

Ces méthodes effectuent les opérations suivantes :

  • Obtenir les paramètres de l'applet

  • Obtenir l'emplacement réseau du fichier HTML contenant l'applet

  • Obtenir l'emplacement réseau du répertoire de classe de l'applet

  • Imprimer les informations d'état du navigateur

  • Obtenir une image

  • obtenir un clip audio

  • lire un clip audio

  • Ajustez cette applet La taille de

De plus, la classe Applet fournit également une interface permettant au visualiseur ou au navigateur d'obtenir des informations sur l'applet et de contrôler l'exécution de l'applet.

Le visualiseur peut être :

  • Demander des informations sur l'auteur de l'applet, la version et le copyright

  • Demander une description des paramètres reconnu par l'applet

  • Initialiser l'applet

  • Détruire l'applet

  • Commencer à exécuter l'applet

  • Fin de l'exécution de l'applet

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

Les applets "Hello, World" sont écrites selon les standards. La seule méthode qui a été remplacée est la méthode paint.


Appel d'Applet

Applet est un programme Java. Il s'exécute généralement dans un navigateur Web compatible Java. Parce qu'elle prend entièrement en charge l'API Java, l'applet est une application Java complète. La balise

<applet> est la base de l'intégration d'une applet dans des fichiers HTML. Ce qui suit est un exemple d'appel de 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>

Remarque : Vous pouvez vous référer à la balise HTML Applet pour en savoir plus sur la façon d'appeler une applet à partir de HTML. Les attributs de la balise

<applet> spécifient la classe Applet à exécuter. La largeur et la hauteur sont utilisées pour spécifier la taille initiale du panneau d'exécution de l'applet. Les applets doivent être fermées à l'aide de la balise </applet>

Si l'applet accepte des paramètres, la valeur du paramètre doit être ajoutée dans la balise située entre <applet> et </applet>. Le navigateur ignore le texte et les autres balises entre les balises d'applet.

Les navigateurs qui ne prennent pas en charge Java ne peuvent pas exécuter <applet> et </applet>. Par conséquent, tout ce qui est affiché entre les balises et qui n'est pas lié à l'applet sera visible dans les navigateurs qui ne prennent pas en charge Java.

La visionneuse ou le navigateur recherche le code Java compilé à l'emplacement du document. Pour spécifier le chemin du document, vous devez utiliser l'attribut codebase de la balise <applet>.

est la suivante :

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

Si l'applet est dans un package autre que le package par défaut, le package doit être précisé dans l'attribut code, par exemple :

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

Obtenir les paramètres de l'applet

L'exemple suivant montre comment utiliser une réponse d'applet pour définir les paramètres spécifiés dans un fichier. Cette applet affiche un motif en damier noir et une seconde couleur.

La deuxième couleur et la taille de chaque colonne sont précisées via les paramètres de l'applet dans le document.

CheckerApplet obtient ses paramètres dans la méthode init(). Vous pouvez également obtenir ses paramètres dans la méthode paint(). Cependant, il est pratique et efficace d'obtenir la valeur au début de l'applet et d'enregistrer les paramètres, plutôt que d'obtenir la valeur à chaque actualisation.

Le visualiseur d'applet ou le navigateur appelle la méthode init() à chaque fois que l'applet s'exécute. Immédiatement après le chargement de l'applet, le Viewer appelle la méthode init() (Applet.init() ne fait rien), remplace l'implémentation par défaut de la méthode et ajoute du code d'initialisation personnalisé.

La méthode Applet.getParameter() récupère la valeur du paramètre en donnant le nom du paramètre. Si la valeur obtenue est un nombre ou d’autres données autres que des caractères, elle doit être analysée comme un type de chaîne.

L'exemple suivant est le contour de CheckerApplet.java :

import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
   int squareSize = 50;// 初始化默认大小
   public void init () {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

Ce qui suit est la méthode init() et la méthode privée parseSquareSize() de la classe CheckerApplet :

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) {
     // 保留默认值
   }
}

L'applet appelle parseSquareSize (), pour analyser le paramètre squareSize. parseSquareSize() appelle la méthode de bibliothèque Integer. parseInt(), qui analyse une chaîne en un entier lorsque le paramètre n'est pas valide, Integer.parseInt() lève une exception.

Par conséquent, la méthode parseSquareSize() intercepte également les exceptions et ne permet pas à l'applet d'accepter des entrées non valides.

Applet appelle la méthode parseColor() pour analyser le paramètre de couleur en une valeur Color. La méthode parseColor() effectue une série de comparaisons de chaînes pour faire correspondre la valeur du paramètre au nom de la couleur prédéfinie. Vous devez implémenter ces méthodes pour que l'applet fonctionne.


Spécifier les paramètres de l'applet

L'exemple suivant est un fichier HTML dans lequel est intégrée la classe CheckerApplet. Le fichier HTML spécifie deux paramètres pour l'applet à l'aide de balises.

<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 des paramètres ne sont pas sensibles à la casse.


Convertir les applications en applets

Convertir les applications Java graphiques (faisant référence aux applications utilisant AWT et aux programmes lancés à l'aide du lanceur de programme Java) en applications intégrées L'applet dans la page Web est très simple.

Voici quelques étapes pour convertir une application en applet :

  • Écrivez une page HTML avec des balises qui chargent le code de l'applet.

  • Écrivez une sous-classe de la classe JApplet et définissez la classe sur public. Sinon, l'applet ne pourra pas être chargée.

  • Éliminez la méthode main() de l'application. Ne construisez pas de fenêtre frame pour votre application car votre application est affichée dans le navigateur.

  • Déplacez le code d'initialisation dans la méthode de construction de la fenêtre frame de l'application vers la méthode init() de l'applet. Vous n'êtes pas obligé de construire explicitement l'objet applet. appellera la méthode init() pour instancier un objet.

  • Supprimez l'appel à la méthode setSize() Pour les applets, la taille a été définie via les paramètres de largeur et de hauteur dans le fichier HTML.

  • Supprimez l'appel à la méthode setDefaultCloseOperation(). L'applet ne peut pas être fermée ; elle se termine à la fermeture du navigateur.

  • Si l'application appelle la méthode setTitle(), éliminez l'appel à cette méthode. Les applets ne peuvent pas avoir de barres de titre. (Bien sûr, vous pouvez nommer la page Web elle-même via la balise de titre html)

  • Ne pas appeler setVisible(true), l'applet s'affichera automatiquement.


Gestion des événements

La classe Applet hérite de nombreuses méthodes de gestion des événements de la classe Container. La classe Container définit plusieurs méthodes, telles que processKeyEvent() et processMouseEvent(), pour gérer des types spéciaux d'événements. Il existe également une méthode qui capture tous les événements appelée processEvent.

Afin de répondre à un événement, l'applet doit remplacer la méthode de gestion des événements appropriée.

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! ");
    }
}

Appelez l'applet comme suit :

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

À la première exécution, l'applet affiche "initialisation de l'applet. Démarrage de l'applet.", puis dès que vous cliquez sur la case rectangulaire, " clic de souris" s'affichera. .


Afficher des images

L'applet peut afficher des images au format GIF, JPEG, BMP et autres formats. Afin d'afficher une image dans une applet, vous devez utiliser la méthode drawImage() de la classe java.awt.Graphics.

L'exemple suivant montre toutes les étapes d'affichage des 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);
   } 
}

Appelez l'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>

Lire l'audio

L'applet peut être utilisé L'interface AudioClip du package java.applet lit l'audio. L'interface AudioClip définit trois méthodes :

  • public void play() : Lire le clip audio une fois depuis le début.

  • public void loop() : Boucle de clips audio

  • public void stop() : Arrêtez la lecture du clip audio

Afin d'obtenir l'objet AudioClip, vous devez appeler la méthode getAudioClip() de la classe Applet. Que l'URL pointe vers un vrai fichier audio ou non, cette méthode renverra le résultat immédiatement.

Le fichier audio ne sera téléchargé que lorsqu'il sera temps de le lire.

L'exemple suivant montre toutes les étapes pour lire de l'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();
      }
   }
}

Appelez l'applet comme suit :

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

Vous pouvez utiliser test.wav sur votre ordinateur pour tester ce qui précède exemple.