Du fait des limitations de sécurité, une applet ne peut pas accéder au disque dur de l'ordinateur client sur lequel elle s'exécute. Le fichier image qu'elle doit afficher doit être téléchargé à partir d'une URL.
Pour Java les URL sont représentées par la classe URL contenue dans le package java.net. On peut obtenir l'URL d'une applet en utilisant sa méthode getCodeBase().
La classe Image permet de représenter une image en mémoire. On peut créer une instance de cette classe en téléchargeant un fichier image au format gif ou jpg. Cette opération est réalisée par la méthode getImage qui peut prend deux formes :
Dans la première forme on donne en paramètres une URL complète, dans la seconde on donne une URL de base et un chemin relatif sous forme de chaîne de caractères. Si le fichier image se trouve dans le même dossier que l'applet on créera un objet img de la classe Image en écrivant :
img=getImage(getCodeBase(),"monImage.jpg");
L'affichage d'une image se fait comme tout affichage à partir d'un objet de la classe Graphics avec la méthode drawImage. Celle-ci peut prendre plusieurs formes parmi lesquelles on trouve :
Ecrivons une applet qui affiche une image titée d'un fichier dont le nom est passé en paramètre.
import java.applet.*; import java.awt.*; import java.net.*; public class affimg extends Applet { Image img; public void init() { img=null; String S=getParameter("image"); if (S!=null) { img=getImage(getCodeBase(),S); } } public void paint(Graphics g) { if (img!=null) g.drawImage(img,0,0,this); } }
La classe AudioClip permet de représenter des sons. On peut créer une instance de cette classe en téléchargeant un fichier son. Cette opération est réalisée par la méthode getAudioClip qui peut prend deux formes :
Dans la première forme on donne en paramètres une URL complète, dans la seconde on donne une URL de base et un chemin relatif sous forme de chaîne de caractères. Si le fichier son se trouve dans le même dossier que l'applet on créera un objet son de la classe AudioClip en écrivant :
son=getAudioClip(getCodeBase(),"monSon.au");
Pour faire entendre le son associé à un objet de type AudioClip on dipose des méthodes suivantes :
Ecrivons une applet qui permet de jouer un son isolé et un son en continu grâce à deux boutons.
import java.applet.*; import java.awt.*; import java.awt.event.*; public class son extends Applet implements ActionListener { AudioClip ding; AudioClip fond; Button bding=new Button("DING"); Button bfond=new Button("DEPART"); boolean bruitFond=false; public void init() { ding=getAudioClip(getCodeBase(),"ding.au"); fond=getAudioClip(getCodeBase(),"oiseau.au"); add(bding); bding.addActionListener(this); add(bfond); bfond.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==bding) ding.play(); else if (e.getSource()==bfond) { if (bruitFond) { fond.stop(); bfond.setLabel("DEPART"); bruitFond=false; } else { fond.loop(); bfond.setLabel("STOP"); bruitFond=true; } } } public void stop() { if (bruitFond) fond.stop(); } }
On a supposé que les fichiers ding.au et oiseau.au sont dans le même dossier que l'applet.
La méthode stop() de l'applet a été surchargée pour arrêter le son joué en continu lorsqu'on ferme la page html contenant l'applet.