Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Java - Bases de l'applet

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'intégralité de l'API Java.

Il existe des différences importantes entre une applet et une application Java autonome, notamment les suivantes −

Cycle de vie d'une applet

Quatre méthodes de la classe Applet vous donnent le cadre sur lequel vous construisez n'importe quelle applet sérieuse −

Une applet "Hello, World"

Voici une applet simple 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 instructions d'importation amènent les classes dans la portée de notre classe d'applet −

Sans ces instructions d'importation, le compilateur Java ne reconnaîtrait pas les classes Applet et Graphics, auxquelles la classe applet fait référence.

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.

Celles-ci incluent des méthodes qui font ce qui suit −

De plus, la classe Applet fournit une interface par laquelle le visualiseur ou le navigateur obtient des informations sur l'applet et contrôle l'exécution de l'applet. Le spectateur peut −

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 complet tel quel. La seule méthode remplacée est la méthode de peinture.

Invoquer une applet

Une applet peut être appelée en incorporant des directives dans un fichier HTML et en visualisant le fichier via un visualiseur d'applet ou un navigateur compatible Java.

La balise est la base de l'intégration d'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>

Remarque − Vous pouvez vous référer à HTML Applet Tag pour en savoir plus sur l'appel d'applet à partir de HTML.

L'attribut code de la balise est obligatoire. Il spécifie la classe Applet à exécuter. La largeur et la hauteur sont également requises pour spécifier la taille initiale du panneau dans lequel une applet s'exécute. La directive applet doit être fermée par une balise .

Si une applet prend des paramètres, des valeurs peuvent être passées pour les paramètres en ajoutant des balises entre et . Le navigateur ignore le texte et les autres balises entre les balises de l'applet.

Les navigateurs non compatibles Java ne traitent pas et . Par conséquent, tout ce qui apparaît entre les balises, sans rapport avec l'applet, est visible dans les navigateurs non compatibles Java.

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

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

Si une applet réside dans un package autre que celui par défaut, le package de stockage doit être spécifié dans l'attribut code à l'aide du caractère point (.) pour séparer les composants package/classe. Par exemple −

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

Obtenir les paramètres de l'applet

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

La deuxième couleur et la taille de chaque carré peuvent être spécifiées en tant que 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 seule fois au démarrage de l'applet, plutôt qu'à chaque actualisation, est pratique et efficace.

Le visualiseur d'applet ou le navigateur appelle la méthode init() de chaque applet qu'il exécute. Le visualiseur 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 en fonction du nom du paramètre (la valeur d'un paramètre est toujours une chaîne). Si la valeur est numérique ou autre donnée non alphanumérique, la chaîne doit être analysée.

Ce qui suit est 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) {}
}

Voici les méthodes init() et private parseSquareSize() de 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) {
      // Let default value remain
   }
}

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 et renvoie un entier. Integer.parseInt() lève une exception chaque fois que son argument est invalide.

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

L'applet appelle parseColor() pour analyser le paramètre color en une valeur Color. parseColor() effectue une série de comparaisons de chaînes pour faire 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 un CheckerApplet intégré. Le fichier HTML spécifie les deux paramètres à l'applet au moyen de la balise .

<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'applications en applets

Il est facile de convertir une application Java graphique (c'est-à-dire une application qui utilise l'AWT et que vous pouvez démarrer avec le lanceur de programme Java) en une applet que vous pouvez intégrer dans une page Web.

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

  • Créez une page HTML avec la balise appropriée pour charger le code de l'applet.

  • Fournissez une sous-classe de la classe JApplet. Rendre cette classe publique. Sinon, l'applet ne peut pas être chargée.

  • Éliminer la méthode principale dans l'application. Ne construisez pas de fenêtre frame pour l'application. Votre application sera affichée dans le navigateur.

  • Déplacez tout code d'initialisation du constructeur de fenêtre frame vers la méthode init de l'applet. Vous n'avez pas besoin de construire explicitement l'objet applet. Le navigateur l'instancie pour vous et appelle la méthode init.

  • Supprimez l'appel à setSize ; pour les applets, le dimensionnement se fait avec les paramètres largeur et hauteur du fichier HTML.

  • Supprimez l'appel à setDefaultCloseOperation. Une applet ne peut pas être fermée; il se termine lorsque le navigateur se ferme.

  • Si l'application appelle setTitle, éliminez l'appel à la méthode. Les applets ne peuvent pas avoir de barres de titre. (Vous pouvez, bien sûr, donner un titre à la page Web elle-même, en utilisant la balise de titre 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 gestion d'événements de la classe Container. La classe Container définit plusieurs méthodes, telles que processKeyEvent et processMouseEvent, pour gérer des types particuliers d'événements, puis une méthode fourre-tout appelée processEvent.

Afin de 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 affichera "initialisation de l'applet. Démarrage de l'applet." Ensuite, une fois que vous aurez cliqué à l'intérieur du rectangle, "clic de la souris" s'affichera également.

Afficher des images

Une applet peut afficher des images au 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 un exemple illustrant toutes les étapes pour afficher 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);
   }  
}

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 package java.applet. L'interface AudioClip a trois méthodes, y compris −

  • jeu vide public() − Lit le clip audio une fois, depuis le début.

  • boucle vide publique() − Provoque la lecture continue du clip audio.

  • arrêt d'annulation publique() − Arrête la lecture du clip audio.

Pour obtenir un objet AudioClip, vous devez invoquer la méthode getAudioClip() de la classe Applet. La méthode getAudioClip() revient immédiatement, que l'URL se résolve ou non en un fichier audio réel. Le fichier audio n'est pas téléchargé tant qu'une tentative de lecture du clip audio n'est pas effectuée.

Voici un exemple illustrant toutes les étapes pour lire un fichier 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 ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "0" height = "0">
      <param name = "audio" value = "test.wav">
   </applet>
   <hr>
</html>

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


Java

  1. Opérateurs Java
  2. Commentaires Java
  3. Java pour chaque boucle
  4. Chaînes Java
  5. InterfaceJava
  6. Classe anonyme Java
  7. Java essayer avec des ressources
  8. Annotations Java
  9. Assertions Java