English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un applet est un programme Java. Il s'exécute généralement dans un navigateur Web prenant en charge Java. Grâce à l'API Java complète, un applet est une application Java complète.
Voici les différences importantes entre une application Java indépendante et un programme applet, comme montré ci-dessous :
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 ne peut pas appeler la méthode main().
L'Applet est conçu pour être intégré dans une page HTML.
Lorsque l'utilisateur navigue sur une page HTML contenant un Applet, le code de l'Applet est téléchargé sur l'ordinateur de l'utilisateur.
Pour voir un Applet, il est nécessaire d'avoir un JVM. Le JVM peut être un plugin du navigateur Web ou un environnement de temps d'exécution indépendant.
Le JVM sur la machine de l'utilisateur crée un exemple de classe Applet et appelle diverses méthodes du cycle de vie de l'Applet.
L'Applet doit respecter des règles de sécurité strictes imposées par le navigateur Web, et le mécanisme de sécurité de l'Applet est appelé sécurité sandbox.
Les autres classes nécessaires à l'Applet peuvent être téléchargées sous forme de fichier Java Archive (JAR).
Les quatre méthodes de la classe Applet nous fournissent un cadre sur lequel nous pouvons développer des mini-applications :
init : L'objectif de cette méthode est de fournir toute initialisation nécessaire à votre Applet. Cette méthode est appelée après que les balises param dans les balises Applet aient été traitées.
start : Cette méthode est automatiquement appelée après que le navigateur ait appelé la méthode init. Chaque fois que l'utilisateur retourne à la page contenant l'Applet à partir d'une autre page, cette méthode est appelée.
stop : Cette méthode est automatiquement appelée lorsque l'utilisateur supprime l'Applet de la page. Par conséquent, cette méthode peut être appelée plusieurs fois dans le même Applet.
destroy : Cette méthode est appelée uniquement lorsque le navigateur est fermé normalement. Comme l'Applet n'est valide que sur une page HTML, vous ne devriez pas oublier de libérer toutes les ressources après que l'utilisateur ait quitté la page contenant l'Applet.
paint : Cette méthode est appelée immédiatement après la méthode start() ou lorsque l'Applet doit être redessiné dans le navigateur. La méthode paint() hérite en fait de java.awt.
Voici un simple programme 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 importent importent les classes suivantes dans notre classe Applet :
java.applet.Applet. java.awt.Graphics.
Sans ces instructions d'importation, le compilateur Java ne pourrait pas identifier les classes Applet et Graphics.
Chaque Applet est une sous-classe de java.applet.Applet, la classe Applet de base fournissant des méthodes pour les classes dérivées pour obtenir des informations sur le contexte du navigateur et les services.
Ces méthodes font ce qui suit :
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 la classe Applet
Imprimer les informations d'état du navigateur
Récupérer une image
Récupérer un fragment audio
Jouer un fragment audio
Ajuster la taille de cet Applet
En plus de cela, la classe Applet fournit une interface permettant au visualiseur ou au navigateur de récupérer des informations sur l'Applet et de contrôler son exécution.
Le visualiseur peut être :
Informations sur l'auteur, la version et le copyright de l'Applet
Description des paramètres que l'Applet peut identifier
Initialiser l'Applet
Détruire l'Applet
Commencer l'exécution de l'Applet
Arrêter l'exécution de l'Applet
La classe Applet fournit des implémentations par défaut pour ces méthodes, qui peuvent être redéfinies si nécessaire.
Les applets "Hello, World" sont tous codés selon les normes. La seule méthode redéfinie est la méthode paint.
Un Applet est un programme Java. Il s'exécute généralement dans un navigateur Web prenant en charge Java. En raison de la prise en charge complète de l'API Java, l'Applet est une application Java complète.
L'étiquette <applet> est la base pour intégrer un Applet dans un fichier HTML. Voici 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"> Si votre navigateur était Java-activé, un "Hello, World" message apparaîtrait ici. </applet> <hr> </html>
Attention : Vous pouvez vous référer à l'étiquette HTML Applet pour en savoir plus sur les méthodes d'appel d'applet à partir de HTML.
Les attributs de la balise <applet> spécifient la classe d'Applet à exécuter. width et height sont utilisés pour spécifier la taille initiale du panneau de l'Applet. L'Applet doit utiliser </applet> pour fermer.
Si l'Applet accepte des paramètres, les valeurs des paramètres doivent être ajoutées dans les balises <param>, situées entre les balises <applet> et </applet> entre eux. Le navigateur ignore le texte entre les balises <applet> et d'autres balises.
Les navigateurs qui ne prennent pas en charge Java ne peuvent pas exécuter <applet> et </applet> ainsi, tout ce qui est affiché entre les balises et n'a pas de rapport avec l'applet, est visible dans les navigateurs qui ne prennent pas en charge Java.
Le visualiseur ou le navigateur recherche le code Java compilé à l'emplacement du document. Pour spécifier le chemin du document, utilisez l'attribut codebase de la balise <applet>.
Comme indiqué ci-dessous :
<applet codebase="http://amrood.com/applets code="HelloWorldApplet.class" width="320" height="120">
Si l'Applet se trouve dans un paquet autre que le paquet par défaut, le paquet dans lequel il se trouve doit être spécifié dans l'attribut code, par exemple :
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
L'exemple suivant montre comment utiliser une réponse d'Applet pour définir les paramètres spécifiés dans le fichier. L'Applet affiche un motif damier noir et une couleur de deuxième type.
La couleur de deuxième type et la taille de chaque colonne sont spécifiées par les 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, il est plus pratique et efficace que l'Applet commence à obtenir des valeurs et à enregistrer les paramètres, plutôt que de les obtenir à chaque mise à jour.
Le visualiseur d'Applet ou le navigateur appelle la méthode init() chaque fois qu'un Applet est exécuté. Après avoir chargé l'Applet, le visualiseur appelle immédiatement la méthode init() (Applet.init() ne fait rien), redéfinit l'implémentation par défaut de cette méthode et ajoute du code d'initialisation personnalisé.
La méthode getParameter() de l'Applet permet d'obtenir la valeur du paramètre en fournissant le nom du paramètre. Si la valeur obtenue est un nombre ou d'autres données non caractères, elle doit être analysée comme une chaîne de caractères.
Voici la modification du fichier CheckerApplet.java :
import java.applet;*; import java.awt;*; public class CheckerApplet extends Applet { int squareSize = 50;// Initialiser la taille par défaut public void init() {} private void parseSquareSize(String param) {} private Color parseColor(String param) {} public void paint(Graphics g) {} }
Voici la méthode init() de la classe CheckerApplet et la méthode privée parseSquareSize() :
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) { // Conserver la valeur par défaut } }
L'Applet appelle parseSquareSize() pour analyser le paramètre squareSize. La méthode parseSquareSize() appelle la méthode de bibliothèque Integer.parseInt(). Cette méthode convertit une chaîne en un entier. Lorsque le paramètre est invalide, Integer.parseInt() lève une exception.
Par conséquent, la méthode parseSquareSize() capture également les exceptions et n'autorise pas l'Applet à accepter des entrées non valides.
L'applet appelle la méthode parseColor() pour convertir le paramètre de couleur en une valeur Color. La méthode parseColor() effectue une série de comparaisons de chaînes pour correspondre la valeur du paramètre avec les noms de couleurs prédéfinies. Vous devez implémenter ces méthodes pour que l'Applet fonctionne.
L'exemple suivant est un fichier HTML intégrant la classe CheckerApplet. Le fichier HTML spécifie deux paramètres à l'applet en utilisant les balises <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>
Attention : Les noms de paramètres ne sont pas sensibles à la casse.
Il est très simple de convertir une application Java graphique (c'est-à-dire, une application utilisant AWT et démarrée par un lanceur java) en applet intégré dans une page web.
Voici quelques étapes pour convertir une application en Applet :
Écrivez une page HTML qui contient des balises capables de charger le code de l'applet.
Écrivez une sous-classe de JApplet, et définissez-la comme public. Sinon, l'Applet ne peut pas être chargé.
Supprimez la méthode main() de l'application. Ne construisez pas de fenêtre de cadre pour l'application, car elle doit être affichée dans le navigateur.
Déplacez le code d'initialisation de la méthode de construction de la fenêtre de cadre de l'application dans la méthode init() de l'Applet. Vous n'avez pas besoin de construire explicitement l'objet Applet, le navigateur le fera en appelant la méthode init().
Retirez l'appel à la méthode setSize(). Pour un Applet, la taille est déjà définie par les paramètres width et height dans le fichier HTML.
Retirez l'appel à la méthode setDefaultCloseOperation(). L'applet ne peut pas être fermé, il se termine avec la fermeture du navigateur.
Si l'application appelle la méthode setTitle(), supprimez l'appel à cette méthode. L'applet ne peut pas avoir de barre de titre. (Bien sûr, vous pouvez donner un nom à la page via le tag title de l'HTML)
Do not call setVisible(true), the Applet is automatically displayed.
The Applet class inherits many event handling methods from the Container class. The Container class defines several methods, such as processKeyEvent() and processMouseEvent(), which are used to handle special types of events, and another method called processEvent to capture all events.
To respond to an event, an Applet must override the appropriate event handling method.
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 applet "); } 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) //afficher la chaîne à l'intérieur du 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("clique souris! "); } }
Voici comment appeler cet Applet :
<html> <title>Gestion des événements</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
Au premier lancement, l'Applet affiche "initialisant l'applet. Démarrage de l'applet." et ensuite, lorsque vous cliquez sur le rectangle, il affiche "clique souris" .
L'Applet peut afficher des images au format GIF, JPEG, BMP et d'autres formats. Pour afficher une image dans un Applet, vous devez utiliser la méthode drawImage() de la classe java.awt.Graphics.
Voici un exemple qui montre toutes les étapes pour afficher une image :
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(); // Afficher dans la barre d'état du navigateur context.showStatus("Ne peut pas charger l'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); } }
如下调用该applet:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>
Applet 能通过使用 java.applet 包中的 AudioClip 接口播放音频。AudioClip 接口定义了三个方法:
public void play(): 从一开始播放音频片段一次。
public void loop(): 循环播放音频片段
public void stop(): 停止播放音频片段
为了得到 AudioClip 对象,你必须调用 Applet 类的 getAudioClip() 方法。无论 URL 指向的是否是一个真实的音频文件,该方法都会立即返回结果。
直到要播放音频文件时,该文件才会下载下来。
如下示例演示了播放音频的所有步骤:
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(); } } }
The following is the applet call:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>
You can use test.wav on your computer to test the above example.