1.5 Les méthodes des applets

publicité
JAVA ET LES APPLETS
JAVA – LES APPLETS
Sommaire
1.1 Présentation _______________________________________________3
1.1.1
Les applets ____________________________________________3
1.1.2
Structure du code d'une applet V2 __________________________5
1.1.3
Structure minimale d'une page HTML incorporant une Applet ____5
1.2 Première Applet : Afficher un texte _____________________________6
1.3 Les attributs de la balise Applet ________________________________8
1.4 La balise Param lors de l'appel d'une applet _______________________9
1.5 Les méthodes des applets ____________________________________11
1.5.1
Le constructeur _______________________________________11
1.5.2
La méthode init() ______________________________________11
1.5.3
La méthode start() _____________________________________11
1.5.4
La méthode paint() ____________________________________11
1.5.5
La méthode repaint() ___________________________________11
1.5.6
La méthode stop() _____________________________________11
1.5.7
La méthode destroy() ___________________________________11
1.5.8
La méthode getParameter() ______________________________12
1.5.9
La méthode getAppletInfo() _____________________________12
1.5.10 La méthode showStatus() _______________________________12
1.5.11 La méthode getParameterInfo() ___________________________13
1.6 Le cycle de vie d'une applet __________________________________14
1.7 Utilisation de quelques méthodes de base _______________________16
1.8 Une applet pour contrôler une saisie ___________________________19
1.9 Lire un fichier sur le WEB ___________________________________22
1.10 Une applet pour accéder à une table MySQL ___________________25
1.11 Communication Applet-HTML : Le convertisseur _______________27
1.12 Le graphisme dans les applets _______________________________31
1.13 Le graphisme animé dans une applet _________________________33
1.14 Des images dans une applet ________________________________35
1.15 Une animation avec des JPEG dans une applet __________________38
1.16 Une applet dans une application _____________________________43
1.17 Utiliser un fichier JAR pour une applet ________________________47
1.18 Annexe : Structure du code d'une applet V1 ____________________48
© Pascal Buguet
Imprimé le 27 mai 2017
Page 2
JAVA – LES APPLETS
1.1
PRESENTATION
1.1.1
Les applets
Une applet Java est un petit programme qui sera exécuté par et dans un navigateur ou l'AppletViewer
ou même une application.
Mais la plupart du temps il s'agit d'une classe qui est appelée dans une page HTML bien souvent pour
faire de l'animation.
Les applets de la version 2 de Java sont issues de la classe JApplet du package javax.swing.
Les applets de la version 1 sont issues de la classe Applet du package java.applet.
Les deux classes ne sont pas compatibles dans la mesure où, comme nous l'avons déjà vu lors de
l'étude de l'interface Swing, le container ContentPane est le parent de tous les enfants de l'applet.
Les applets, principalement utilisées dans des pages HTML, sont chargées au travers du réseau. Ce
sont des applications mobiles ou portables exécutées dans le navigateur.
Les navigateurs n'acceptent pas nativement les applets.
Le plugin Java2 de Sun est nécessaire et doit être installé sur le poste client. Il s'agit du JRE. Il installe
une console.
Il est par ailleurs possible de développer avec le JDK2 et de compiler en version 1.x avec l'option target. La syntaxe est la
suivante : Javac –target 1.1 applet.java.
Schéma de chargement d'une applet
Client
Serveur
Requête HTML
Réponse HTML
Requête Applet
Réponse Applet
Note :
Si plusieurs éléments sont présents et composent l'applet (Classes, images, …) il faut créer un jar. Cf plus loin.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 3
JAVA – LES APPLETS
Les applets résident sur le disque dur du serveur et s'exécute chez le client.
Le cycle de vie d'une applet est différent du cycle de vie d'une application.
Une applet est d'abord initialisée (init()) puis démarrée (start()) à chaque fois que l'utilisateur change
de page puis revient sur la page contenant l'applet.
Les applets ont moins de droits que les applications dans la mesure où elles ne peuvent ni lire, ni
écrire de fichiers, ni lancer de programmes, ni charger de dll du poste client.
Elles ne peuvent communiquer qu'avec le serveur d'origine ou une autre applet.
Les applets permettent de faire du C/S plus évolué que le HTML (en créant un client riche) dans la
mesure où vous pouvez faire des contrôles au moment de la saisie de l'utilisateur (comme avec
JavaScript par ailleurs ou ActionScript de Flash).
L'arborescence du site …
Classes
Html
Images
Ressources
Pour
Pour
Pour
Pour
les
les
les
les
.class ou .jar (soit du package des applets, soit des pilotes BD utilisés)
fichiers HTML
images
autres ressources (fichiers TX, CSV, XML, …)
Ou avec NetBeans et Tomcat :
Notes :
Création d'une applet avec NetBeans :
Projet de type Java/Application Java : projetApplet.
Package : PackageApplets.
Deux types d'applet : Japplet et Japllet Form.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 4
JAVA – LES APPLETS
1.1.2 Structure du code d'une applet V2
import javax.swing.*;
public class NomApplet extends JApplet
{
public void init()
{
// --- Le code
}
}
Le code minimal est le code qui précède.
Une applet nécessite l'importation d'un package :
Javax.swing pour la classe JApplet et l'interface graphique.
La classe est une extension de la classe JApplet.
Elle comporte au moins la fonction init() qui fait office de constructeur.
Les applets ne possèdent pas de méthode main().
Les applets doivent être déclarées comme public.
1.1.3 Structure minimale d'une page HTML incorporant une Applet
L'applet a été développée dans un package par défaut (déconseillé).
<html>
<applet codebase="chemin des .class" code="NomApplet.class" width="pixels"
height="pixels">
</applet>
</html>
Le code minimal est le code qui précède.
Il s'agit de la balise <applet> avec trois valeurs obligatoires, le code qui comprend le nom de la classe
de votre applet, la largeur et la hauteur.
Nous verrons par la suite que nous pourrons ajouter d'autres attributs à cette balise.
Si l'applet a été développée dans un package … et il a fallu créer un jar.
<html>
<applet codebase="chemin du jar ou du fichier .class"
code="nomDuPackage.NomApplet.class" archive="fichier.jar" width="pixels"
height="pixels">
</applet>
</html>
cf le paragraphe sur la création d'un jar. Avec NetBeans appuyez sur F11 ou CTRL/F11.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 5
JAVA – LES APPLETS
1.2 PREMIERE APPLET : AFFICHER UN TEXTE

Objectif
Afficher un texte dans un cadre de couleur dans le navigateur.

Le résultat attendu
L'appel du code : http://localhost/p_applets/html/Applet0.html

Le code de l'applet
package PackageApplets;
import
import
import
import
java.awt.Color;
java.awt.Container;
javax.swing.JApplet;
javax.swing.JLabel;
public class Applet0 extends JApplet
{
@Override
public void init()
{
Container c = getContentPane();
c.setBackground(Color.yellow);
c.add(new JLabel("Première JApplet"));
}
}

Le code de la page HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>applet0.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Début de la page avant première applet</p>
<applet codebase="../classes/" archive="projetApplet.jar"
code="PackageApplets.Applet0.class" alt="Votre navigateur ne supporte pas les
applets" width="200" height="50">
</applet>
<p>Fin de la page après première applet</p>
</body>
</html>
© Pascal Buguet
Imprimé le 27 mai 2017
Page 6
JAVA – LES APPLETS

Commentaires
Pour cette première applet (JApplet) seules quelques classes ont été importées.
En premier lieu la classe JApplet du package SWING (javax.swing.JApplet) pour créer la classe (qui
devient l'applet) elle-même.
Les autres classes sont importées en fonction des éléments qui seront mis dans l'applet.
De façon générale, en ce qui concerne l'interface graphique, les bibliothèques Swing et AWT seront
incorporées.
La méthode init() fait office de constructeur.
La balise applet est obsolète. http://www.w3.org/TR/REC-html40/struct/objects.html
Donc il faudra utiliser la balise <object>.
<object id="applet1" width="200" height="50" codetype="application/java"
codebase="../classes/" archive="projetApplet.jar"
classid="java:PackageApplets.Applet0.class">
Votre navigateur ne peut pas afficher l'applet
</object>
© Pascal Buguet
Imprimé le 27 mai 2017
Page 7
JAVA – LES APPLETS
1.3 LES ATTRIBUTS DE LA BALISE APPLET
Les attributs en gras sont obligatoires.
code = nomDeClasse.class
width = largeur en pixels
height = hauteur en pixels
alt = texte visible quand l'applet ne l'est pas
codebase = URL
Le répertoire de stockage du code de l'applet. Par exemple "../classes/" si les classes sont dans un
dossier de même niveau que le dossier HTML.
archive = Liste des fichiers d'archive (Le ou les jar(s))
name = nom
Permet de préciser un nom pour pouvoir manipuler l'instance de l'applet dans la page (avec du
JavaScript par exemple).
align = type d'alignement
Indique l'alignement de l'applet par rapport aux autres éléments de la page HTML.
Les attributs sont les suivants :
Valeur
LEFT
RIGHT
TOP
MIDDLE
BOTTOM
BASELINE
ABSBOTTOM
ABSMIDDLE
TEXTTOP
Description
Applet
Applet
Applet
Applet
Applet
idem
Applet
Applet
Applet
à gauche
à droite
en haut
au milieu
en bas
en bas
alignée sur le milieu de l'élément le plus grand de la ligne
alignée sur le texte du haut de la ligne
La balise <br /> permet de mettre fin à la valeur d'alignement pour le reste de la page.
C'est l'attribut CLEAR de cette balise qui le permet.
Les valeurs de cet attribut sont LEFT, RIGHT et ALL.
Exemple : <br clear=all /> rétablit l'alignement standard.
vspace = pixels
Le nombre de pixels qui séparent en haut et en bas l'applet du texte de la page.
hspace = pixels
Le nombre de pixels qui séparent à gauche et à droite l'applet du texte de la page.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 8
JAVA – LES APPLETS
1.4
LA BALISE PARAM LORS DE L'APPEL D'UNE APPLET
La balise Param permet de passer des paramètres (en entrée) à une applet.
Chaque paramètre correspond à l'utilisation d'une méthode getParameter("nomDeParamètre") dans
la méthode init() de l'applet.
Pour communiquer avec des attributs de l'applet nous utiliserons des méthodes publiques (cf plus loin
dans ce chapitre).

Syntaxe de Param
<param name="appletAttribute" value="value" />

Syntaxe de getParameter()
getParameter("nomDuParamètre");
© Pascal Buguet
Imprimé le 27 mai 2017
Page 9
JAVA – LES APPLETS

Exemple
Bleu
Jaune
Code de l'applet
package PackageApplets;
import java.awt.*;
import javax.swing.*;
public class AppletParametree extends JApplet
{
public void init()
{
String lsCouleur = getParameter("couleur");
Container c = getContentPane();
if(lsCouleur.equals("bleu")) { c.setBackground(Color.blue); }
if(lsCouleur.equals("jaune")) { c.setBackground(Color.yellow); }
c.add(new JLabel("Première Applet", JLabel.CENTER),
BorderLayout.CENTER);
}
}
Code de la page HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>appletParametree.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<applet codebase="../classes/" archive="projetApplet.jar"
code="PackageApplets.AppletParametree.class" width="300" height="50">
<param name="couleur" value="jaune" />
</applet>
</body>
</html>
Commentaires
Pour simplifier nous importons l'intégralité des bibliothèques Swing et AWT.
La valeur du paramètre est récupérée dans l'applet grâce à getParameter().
String lsCouleur = getParameter("couleur");
L'utilisation du paramètre dans la page HTML :
<param name= "couleur" value="bleu" />
ou bien
<param name= "couleur" value="jaune" />
© Pascal Buguet
Imprimé le 27 mai 2017
Page 10
JAVA – LES APPLETS
1.5 LES METHODES DES APPLETS
1.5.1
Le constructeur
Vous écrivez un constructeur si nécessaire. La méthode init() de toutes façons fait office de
constructeur.
1.5.2 La méthode init()
Elle est appelée par le navigateur juste après le constructeur. Généralement vous récupérez les
valeurs des paramètres dans cette méthode.
1.5.3 La méthode start()
Cette méthode est appelée par le navigateur. Elle démarre l'applet.
1.5.4 La méthode paint()
Elle est appelée par le navigateur après la méthode init() et la méthode start() et à chaque fois que
cela est nécessaire. Cette méthode "dessine" l'interface de l'applet.
1.5.5 La méthode repaint()
Vous appelez cette méthode pour activer par code la méthode paint().
1.5.6 La méthode stop()
Cette méthode est appelée par le navigateur. Elle arrête l'applet, par exemple lorsque l'on change de
page.
1.5.7 La méthode destroy()
Cette méthode, appelée par le navigateur, détruit l'applet et libère l'espace mémoire du navigateur
consacré à l'applet.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 11
JAVA – LES APPLETS
1.5.8 La méthode getParameter()
Permet de récupérer les valeurs des paramètres transmis de la page HTML vers l'applet lors du
chargement de l'applet.
Syntaxe
String = getParameter("paramètre");
1.5.9 La méthode getAppletInfo()
Permet de préciser et de récupérer des informations à propos de l'applet.
Vous surchargez la méthode parent. Cette méthode sera appelée via un script JavaScript.
// ---- La méthode getAppletInfo()
public String getAppletInfo()
{
return "Applet cycle by Pascal Buguet 30.09.2002";
}
<script type="text/javascript">
function afficheGetAppletInfo()
{
alert(ca.getAppletInfo());
}
</script>
<body>
<input type="button" value="getAppletInfo" name="cbAppletInfo"
onclick="afficheGetAppletInfo()" />
<applet codebase="../classes/" code="CycleApplet.class" width="300"
height="550" name="ca">
</applet>
</body>
1.5.10 La méthode showStatus()
Elle permet d'afficher un message dans la barre d'état du navigateur.
Vous pouvez l'insérer dans chaque méthode de l'applet (init(), paint(), …).
Syntaxe
showStatus("Message");
© Pascal Buguet
Imprimé le 27 mai 2017
Page 12
JAVA – LES APPLETS
1.5.11 La méthode getParameterInfo()
Permet de préciser et de récupérer les noms, les types et les descriptions des paramètres. Il faut
surcharger la méthode parent. Cette méthode sera appelée dans l'applet ou via un script JavaScript.
Syntaxe
String[][] = getParameterInfo();
Exemple
// ---- La méthode getParameterInfo()
public String[][] getParameterInfo()
{
String tabParam[][] =
{
{"couleur", "chaine", "couleur du fond de l'applet"},
{"posX", "chaine/int","Position x de l'affichage"},
{"posY", "chaine/int","Position y de l'affichage"}
};
return tabParam;
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 13
JAVA – LES APPLETS
1.6 LE CYCLE DE VIE D'UNE APPLET

Objectif
Illustrer les méthodes du cycle de vie d'une applet.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 14
JAVA – LES APPLETS

Script de l'applet
package PackageApplets;
// --- Cycle de vie d'une applet
import java.awt.*;
// Pour la classe Graphics, Layout, Color
import javax.swing.*;
// Pour la classe JApplet
@SuppressWarnings("serial")
public class CycleApplet extends JApplet
{
// --- Variables d'instance de l'applet
String lsEtat = "";
JTextArea jta = new JTextArea("Cycle",10,30);
JPanel panneau = new JPanel(new GridLayout(1,1));
Container c;
// --- Les méthodes des Applets
public CycleApplet()
{
lsEtat += "Construct\r\n";
}
@Override
public void init()
{
lsEtat += "Init\r\n";
panneau.setBackground(Color.YELLOW);
panneau.add(jta);
c = getContentPane();
c.add(panneau);
}
@Override
public void start()
{
lsEtat += "Start\r\n";
showStatus(lsEtat);
}
@Override
public void paint(Graphics g)
{
lsEtat += "Paint\r\n";
showStatus(lsEtat);
jta.setText(lsEtat);
}
@Override
public void stop()
{
lsEtat += "Stop\r\n";
showStatus(lsEtat);
}
@Override
public void destroy()
{
lsEtat += "Destroy";
showStatus(lsEtat);
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 15
JAVA – LES APPLETS
1.7

UTILISATION DE QUELQUES METHODES DE BASE
Objectif
Un script avec l'illustration des méthodes suivantes :



getParameter("param"),
getParameterInfo(),
getAppletInfo().
© Pascal Buguet
Imprimé le 27 mai 2017
Page 16
JAVA – LES APPLETS

Code java
package PackageApplets;
import
import
import
import
import
java.awt.Container;
java.awt.GridLayout;
java.awt.Color;
java.awt.event.*;
javax.swing.*;
@SuppressWarnings("serial")
public class AppletMethodesExternes extends JApplet
{
Container c;
JPanel
panneau;
JLabel
lblCp;
JLabel
lblVille;
JButton
cbInfos;
JTextArea taMessage;
String isCp, isVille;
// --------------public void init()
{
isCp
= getParameter("cp");
isVille = getParameter("ville");
lblCp
= new JLabel(isCp);
lblVille = new JLabel(isVille);
cbInfos
= new JButton("Infos");
taMessage = new JTextArea("");
taMessage.setBackground(Color.LIGHT_GRAY);
taMessage.setForeground(Color.RED);
panneau = new JPanel(new GridLayout(1,1));
panneau.setBackground(Color.YELLOW);
cbInfos.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
afficherParameterInfo();
}
});
c = getContentPane();
c.add(panneau);
panneau.add(lblCp);
panneau.add(lblVille);
panneau.add(cbInfos);
panneau.add(taMessage);
showStatus("Init terminée");
}
// -------------------------public String getAppletInfo()
{
return "Applet cycle by Pascal Buguet 30.09.2002";
}
// --------------------------------public String[][] getParameterInfo()
{
String tabParam[][] =
{
{"cp", "chaine", "Le CP passé en paramètre"},
{"ville", "chaine","La ville passée en paramètre"}
};
return tabParam;
}
// ---------------------------------
© Pascal Buguet
Imprimé le 27 mai 2017
Page 17
JAVA – LES APPLETS
private void afficherParameterInfo()
{
String[][] t = null;
t = getParameterInfo();
taMessage.setText(t[0][2] + "\n\r" + t[1][2]);
}
}

Code html
<html>
<script type="text/javascript">
function afficherInfosInternesApplet()
{
alert(applet.getAppletInfo()); // --- Méthode interne de
l'applet
}
function afficherParamsApplet()
{
var params = new Array();
params = applet.getParameterInfo();
alert(params[0][2]);
alert(params[1][2]);
}
</script>
<applet codebase="../classes/" code="AppletMethodesExternes.class"
width="800" height="30" name="applet" >
<param name="cp" value="75000" />
<param name="ville" value="Paris" />
</applet>
<br />
<input type="button" value="Afficher Infos Internes de l'applet"
onClick="afficherInfosInternesApplet()" />
<input type="button" value="Afficher Params Applet"
onClick="afficherParamsApplet()" />
</html>
© Pascal Buguet
Imprimé le 27 mai 2017
Page 18
JAVA – LES APPLETS
1.8 UNE APPLET POUR CONTROLER UNE SAISIE

Objectif
Ecrire une applet qui permette des contrôles de saisie (Contrôle de surface).
L'exemple, volontairement simple, est le contrôle d'une saisie numérique (un réel). La saisie ne doit
contenir que des chiffres.
L'utilisateur saisit puis valide sur le bouton Valider. Dans le label de droite un message est affiché.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 19
JAVA – LES APPLETS

Code java
package PackageApplets;
// --import
import
import
Applet pour contrôle de saisie
java.awt.*;
java.awt.event.*;
javax.swing.*;
public class ControleSaisie extends JApplet
{
// --- Les composants graphiques
JPanel panneau = new JPanel(new GridLayout(1,4));
JLabel lblCoursDollar
= new JLabel("Cours du dollar aujourd'hui");
JTextField tfCoursDollar = new JTextField("",10);
JButton cbValider
= new JButton("Valider");
JLabel lblMessage
= new JLabel("Message");
// --- Le constructeur
public ControleSaisie()
{
panneau.setBackground(Color.LIGHT_GRAY);
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String lsInter;
char lcCar;
lsInter = tfCoursDollar.getText();
for(int i=0; i<lsInter.length(); i++)
{
lcCar = lsInter.charAt(i);
if(Character.isDigit(lcCar) || lcCar == ',')
lblMessage.setText("Ok numérique");
else
{lblMessage.setText("Pas numérique");break;}
}
}
};
cbValider.addActionListener(al);
panneau.add(lblCoursDollar);
panneau.add(tfCoursDollar);
panneau.add(cbValider);
panneau.add(lblMessage);
getContentPane().add(panneau);
}
}

Commentaires
Sur l'événement click du bouton les caractères du texte sont extraits un par un dans une boucle et
stocké dans un char. On teste le type du caractère avec la méthode isDigit(). On sort de la boucle dès
que l'on rencontre un caractère non numérique.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 20
JAVA – LES APPLETS

Code html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>controleSaisie.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<applet codebase="../classes/" archive="projetApplet.jar"
code="PackageApplets.ControleSaisie.class" width="800" height="50"></applet>
</body>
</html>
© Pascal Buguet
Imprimé le 27 mai 2017
Page 21
JAVA – LES APPLETS
1.9

LIRE UN FICHIER SUR LE WEB
Objectif
Afficher le contenu d'un fichier text dans un [JTextArea].

Démarche
Construire l'interface avec un JButton et un JTextArea.
Récupérer l'URL correspond au fichier avec la méthode getCodeBase().
Pointer sur le fichier avec un objet InputStreamReader et l'ouvrir avec la méthode openStream().
Utiliser un filtre de lecture avec un objet BufferedReader.
Lire les lignes avec la méthode ReadLine().

Citations.txt
Le fichier citations.txt se trouve dans dossier nommé /ressources (Au même niveau que classes).
Mieux vaut tard que jamais
Rien ne sert de courir il faut partir à point
Chi va piano va sano
© Pascal Buguet
Imprimé le 27 mai 2017
Page 22
JAVA – LES APPLETS

Code HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>lectureFichier1.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<applet codebase="../classes/" archive="projetApplet.jar"
code="PackageApplets.LectureFichier1.class" alt="Votre navigateur ne supporte pas
les applets" width="400" height="200">
</applet>
</body>
</html>

Code JAVA
package PackageApplets;
// --import
import
import
import
import
Applet pour la lecture d'un fichier texte
java.awt.*;
java.awt.event.*;
javax.swing.*;
java.net.*;
// Pour les URL
java.io.*;
// Pour la gestion de fichiers
@SuppressWarnings("serial")
public class LectureFichier1 extends JApplet
{
// --- Les composants graphiques
JPanel panneau
= new JPanel();
JTextArea taEnr
= new JTextArea("",10,30);
JButton cbValider = new JButton("Valider");
public LectureFichier1()
{
panneau.setBackground(Color.yellow);
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String lsLigne = "";
try
{
URL url = new
URL(getCodeBase(),"../ressources/citations.txt");
taEnr.append(url.toString() + "\r\n\r\n");
InputStreamReader fichier = new
InputStreamReader(url.openStream());
BufferedReader tampon = new
BufferedReader(fichier);
while((lsLigne = tampon.readLine()) != null)
{
taEnr.append(lsLigne + "\r\n");
}
fichier.close();
}
catch(MalformedURLException err)
{
taEnr.append("Erreur io : " + err.getMessage() +
"\n");
}
catch(Exception err)
{
© Pascal Buguet
Imprimé le 27 mai 2017
Page 23
JAVA – LES APPLETS
taEnr.append("Erreur générale : " + err.toString()
+ "\n");
}
}
};
cbValider.addActionListener(al);
panneau.add(cbValider, BorderLayout.NORTH);
panneau.add(taEnr, BorderLayout.SOUTH);
getContentPane().add(panneau);
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 24
JAVA – LES APPLETS
1.10

UNE APPLET POUR ACCEDER A UNE TABLE MYSQL
Objectif
Lire les données d'une table MySQL dans un [Vector] et l'afficher via une [JList] dotée d'un
[JScrollPane] (Ascenseur).

Démarche
Créer l'applet.
Ajouter au projet le jar du pilote MySQL.
Ensuite le jar sera dans le dossier des classes sur le serveur http.

Ecrans
© Pascal Buguet
Imprimé le 27 mai 2017
Page 25
JAVA – LES APPLETS

BdMySQL.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>bdMySQL.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<applet codebase="../classes/" archive="mysql-connector-java-5.1.5bin.jar,projetApplet.jar" code="PackageApplets.BdMySQL.class" width="200"
height="200">
</applet>
</body>
</html>
L'archive mysql-connector-java-5….jar est stocké dans le dossier classes/lib/.

BDMySQL.java
package PackageApplets;
import
import
import
import
java.util.Vector;
java.sql.*;
java.awt.*;
javax.swing.*;
public class BdMySQL extends JApplet
{
Vector<String> vecteur = new Vector<String>();
public static final String DRIVER = "org.gjt.mm.mysql.Driver";
public static final String DBURL = "jdbc:mysql://localhost/cours";
public void init()
{
JList lbxResultats
= new JList(vecteur);
JScrollPane ascenseur = new JScrollPane(lbxResultats);
JPanel panneau
= new JPanel(new GridLayout(2,2));
panneau.add(ascenseur);
try
{
Class.forName(DRIVER);
Connection cn = DriverManager.getConnection(DBURL,"root","");
Statement lstSQL = cn.createStatement();
ResultSet lrs = lstSQL.executeQuery("SELECT * FROM villes");
while(lrs.next())
{
vecteur.addElement(lrs.getString(1) + "-" +
lrs.getString(2));
}
lrs.close();
cn.close();
}
catch(SQLException erreur)
{
vecteur.addElement(erreur.getMessage());
}
catch(Exception erreur)
{
vecteur.addElement(erreur.getMessage());
}
getContentPane().add(panneau);
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 26
JAVA – LES APPLETS
1.11 COMMUNICATION APPLET-HTML : LE CONVERTISSEUR

Objectif
Récupérer dans la page HTML les valeurs gérées dans l'applet.
Ecrire une applet qui permet la conversion Euros/Dollars.
Cette page est composée de deux parties : en haut l'applet et en bas un "formulaire" HTML.
Cette applet contient trois JTextFields pour saisir les valeurs du cours, du montant en Euros et du
montant en Dollars, et deux boutons de commande pour les conversions et des JLabels pour
récupérer les résultats des conversions.
L'interface HTML comporte en plus deux boutons de commande et deux <label>. Il s'agit de
récupérer dans la page HTML les valeurs manipulées dans l'applet.

L'applet

L'applet dans la page HTML
L'applet
La "Form"

Fonctionnement
L'utilisateur saisit dans l'applet le cours du dollar, le montant d'Euros ou de Dollars et clique sur un
des boutons de conversions.
S'il veut récupérer les valeurs dans la page HTML il clique sur le ou les boutons correspondants.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 27
JAVA – LES APPLETS

Script de l'applet
// --import
import
import
Applet et Convertisseur Euros-Dollars
java.awt.*;
java.awt.event.*;
javax.swing.*;
public class EurosDollars extends JApplet
{
// --- Les composants graphiques
JPanel panneau = new JPanel(new GridLayout(3,4));
// --- Ligne 1
JLabel lblCoursDollar
JTextField tfCoursDollar
JLabel lblVide1
JLabel lblVide2
=
=
=
=
// --- Ligne 2
JLabel lblEuro
JTextField tfEuros
JButton cbDollars
JLabel lblEuros
JLabel("Euros?");
JTextField("10",10);
JButton("$");
JLabel("");
=
=
=
=
// --- Ligne 3
JLabel lblDollar
JTextField tfDollars
JButton cbEuros
JLabel lblDollars
new
new
new
new
=
=
=
=
new
new
new
new
new
new
new
new
JLabel("Cours du dollar oggi");
JTextField("1.35",10);
JLabel("");
JLabel("");
JLabel("Dollars?");
JTextField("10",10);
JButton("€");
JLabel("");
// --- Le constructeur
public EurosDollars()
{
panneau.setBackground(Color.cyan);
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
float lfDollars, lfEuros, lfInter, lfCoursDollar;
lfCoursDollar = Float.parseFloat(tfCoursDollar.getText());
// --- On clique sur le bouton dollars pour obtenir le montant de
dollars correspondant
if(e.getSource() == cbDollars)
{
lfEuros = Float.parseFloat(tfEuros.getText());
lfInter = lfEuros * lfCoursDollar;
lblDollars.setText(Float.toString(lfInter));
}
// --- On clique sur le bouton euros pour obtenir le montant
d'euros correspondant
if(e.getSource() == cbEuros)
{
lfDollars = Float.parseFloat(tfDollars.getText());
lfInter
= lfDollars / lfCoursDollar;
lblEuros.setText(Float.toString(lfInter));
}
}
};
cbDollars.addActionListener(al);
cbEuros.addActionListener(al);
panneau.add(lblCoursDollar);
panneau.add(tfCoursDollar);
panneau.add(lblVide1);
© Pascal Buguet
Imprimé le 27 mai 2017
Page 28
JAVA – LES APPLETS
panneau.add(lblVide2);
panneau.add(lblEuro);
panneau.add(tfEuros);
panneau.add(cbDollars);
panneau.add(lblDollars);
panneau.add(lblDollar);
panneau.add(tfDollars);
panneau.add(cbEuros);
panneau.add(lblEuros);
getContentPane().add(panneau);
}
// --- Les méthodes ad hoc
public String getDollarsEuros()
{
return tfDollars.getText() + " Dollars valent " + lblEuros.getText() + "
Euros";
}
// --------------------public String getEurosDollars()
{
return tfEuros.getText() + " Euros valent " + lblDollars.getText() + "
Dollars";
}
}

Commentaires
Le schéma de la classe
EurosDollars
(-)panneau
(-)lblCoursDollar
(-) …
(+)getDollarsEuros()
(+)getEurosDollars()
Le corps de la classe
Les composants graphiques sont instanciés dans le constructeur.
Les conversions sont traitées dans l'événement clic des boutons de commande.
Les méthodes particulières
Les méthodes getEurosDollars() et getDollarsEuros() sont des méthodes publiques qui vont permettre
à un utilisateur de la classe, ici la page HTML, de récupérer les valeurs des JTextFields et des JLabels.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 29
JAVA – LES APPLETS

Code de la page HTML
<html>
<head><title>EurosDollars</title></head>
<body>
<applet codebase="../classes/" code="EurosDollars.class" width="500"
height="75" name="convertisseur" id="convertisseur">
</applet>
<script type="text/javascript">
function affecter(etiquette)
{
if(etiquette=="euros") {
document.getElementById("lblEurosDollars").innerHTML =
document.getElementById("convertisseur").getEurosDollars(); }
if(etiquette=="dollars") {
document.getElementById("lblDollarsEuros").innerHTML =
document.getElementById("convertisseur").getDollarsEuros(); }
}
</script>
<br />
<input
<label
<input
<label
</body>
</html>

type="button" value="Euros" onclick="affecter('euros')" />
id="lblEurosDollars"></label><br />
type="button" value="Dollars" onclick="affecter('dollars')" />
id="lblDollarsEuros"></label>
Commentaires
Ce code contient trois parties : l'applet, un script JavaScript et des éléments HTML(button, label).
La fonction affecter(destinataire) JavaScript permet de récupérer les valeurs des JTextFields et des
JLabels via des méthodes de classe et de les affecter aux <labels>.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 30
JAVA – LES APPLETS
1.12 LE GRAPHISME DANS LES APPLETS

Objectif
Introduire au graphisme en java et plus particulièrement dans les applets.

Méthodes utilisées
Méthodes
drawString(chaîne, x, y)
drawLine(x1, y1, x2, y2)
drawRect(x1,y1,largeur, hauteur)
fillRect(x1,y1,largeur, hauteur)
drawRoundRect(x1, y1, largeur, hauteur, largeur_coin,
hauteur_coin)
fillRoundRect(x1, y1, largeur, hauteur, largeur_coin,
hauteur_coin)
drawOval(x,y,largeur,hauteur)
fillOval(x,y,largeur,hauteur)
drawArc(x, y , largeur, hauteur, angle de départ, degrés)
fillArc(x, y , largeur, hauteur, angle de départ, degrés)
drawPolygon(Polygone)
clearRect(x, y , largeur, hauteur)
copyArea( x, y, largeur, hauteur ,déplacement x ,
déplacement y)
© Pascal Buguet
Dessine
Dessine
Dessine
Dessine
Dessine
Description
du texte
une ligne
un rectangle
un rectangle plein
un rectangle aux coins arrondis
Dessine un rectangle plein aux coins
arrondis
Dessine un oval
Dessine un oval plein
Dessine un arc
Dessine un arc plein
Dessin un polygone
Efface un rectangle
Copie un rectangle
Imprimé le 27 mai 2017
Page 31
JAVA – LES APPLETS

Code Java
import java.awt.*;
import javax.swing.JApplet;
// Pour la classe Graphics, Polygon, …
// Pour la classe JApplet
public class Dessins1 extends JApplet
{
public void init() {}
public void paint(Graphics g)
{
//--- g.drawString("string",x,y);
g.drawString("drawLine",10,10);
// --- g.drawLine(x1, y1, x2, y2);
g.drawLine(150,20,200,20);
// --- g.drawRect(x1,y1,larg, ht);
g.drawString("drawRect",10,50);
g.drawRect(150,50,100,20);
// --- g.fillRect(x1,y1,larg, ht);
g.drawString("fillRect",300,50);
g.fillRect(450,50,100,20);
// --- g.drawRoundRect(x1, y1, larg, ht, largeurCoin, hauteurCoin);
g.drawString("drawRoundRect",10,100);
g.drawRoundRect(150,100,85,30,8,8);
// --- g.fillRoundRect(x1, y1, larg, ht, largeurCoin, hauteurCoin);
g.drawString("fillRoundRect",300,100);
g.fillRoundRect(450,100,123,35,15,15);
// --- g.drawOval(x,y,larg,ht);
g.drawString("drawOval",10,150);
g.drawOval(150,150,50,30);
g.drawString("fillOval",300,150);
g.fillOval(450,150,70,30);
// --- g.drawArc(x, y , larg, ht, angle de départ, degrés)
g.drawString("drawArc",10,200);
g.drawArc(150, 200 , 50, 40, 90, 96);
g.drawString("fillArc",300,200);
g.fillArc(450,200,90,10,0,-120);
// --- Coordonnées du polygone tête de marteau
g.drawString("Polygon Marteau",10,300);
int xMarteau[] = {150,200,250,150};
int yMarteau[] = {300,300,320,320};
int liPointsMarteau = xMarteau.length;
Polygon lPolyMarteau = new Polygon(xMarteau,yMarteau,liPointsMarteau);
// --- drawPolygon(Polygone)
g.drawPolygon(lPolyMarteau);
// --- Coordonnées du polygone marche escalier
g.drawString("Polygon Escalier",300,300);
int xEscalier[] = {450,500,500,600,600,450};
int yEscalier[] = {300,300,320,320,340,340};
int liPointsEscalier = xEscalier.length;
Polygon lPolyEscalier = new
Polygon(xEscalier,yEscalier,liPointsEscalier);
g.drawPolygon(lPolyEscalier);
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 32
JAVA – LES APPLETS
1.13 LE GRAPHISME ANIME DANS UNE APPLET

Objectif
Introduire à l'animation dans une applet. Par ajout d'un thread.

Démarche
Utilisation d'un thread pour dessiner.
Le thread est créé au démarrage de l'applet, dans la méthode start().
La méthode run() contient une boucle infinie qui appelle la méthode repaint() qui redessine la balle et
marque une pause d'une seconde.
Utilisation des méthodes fillOval() pour dessiner la balle clearRect() et pour effacer la balle.
Le thread est détruit dans la méthode stop() de l'applet.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 33
JAVA – LES APPLETS

Code java
// ---- Dessiner n sphères
import java.awt.*;
// --- Pour la classe Graphics
import javax.swing.*;
// --- Pour la classe JApplet
public class DessinsDyn2 extends JApplet implements Runnable
{
int liX = 10, liY = 10;
Thread troncheDeProcessus;
// ----------------public void init(){}
// ----------------public void start()
{
liX = 10; liY = 10;
troncheDeProcessus = new Thread(this);
troncheDeProcessus.start();
}
// -------------public void run()
{
boolean lbRouler = true;
while(lbRouler)
{
repaint();
pause(1000);
}
}
// -------------------------public void paint(Graphics g)
{
// --- g.drawOval(x,y,larg,ht);
g.clearRect(liX,liY,30,30);
liX += 10; liY += 10;
g.fillOval(liX,liY,30,30);
}
// --------------------------public void pause(int aiDuree)
{
try { troncheDeProcessus.sleep(aiDuree); }
catch(InterruptedException e) { }
}
// --------------public void stop()
{
troncheDeProcessus = null;
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 34
JAVA – LES APPLETS
1.14 DES IMAGES DANS UNE APPLET

Objectif
Gérer les Images et les ImageIcons dans les applets.
Les fichiers *.jpg sont stockés dans un dossier nommé /images qui est un sous-dossier du dossier des
classes.
L'appel du code : http://localhost/p_applets/AppletImage.html

Classes utilisées
Classe
Image (package AWT)
ImageIcon (package SWING)
URL

Description
Une image (jpg, gif)
Une icône créée à partir d'une image (jpg, gif)
Une URL
Méthodes utilisées
Méthodes
Constructeur URL(Contexte URL, spécification)
Constructeur ImageIcon(URL[,"Description"])
Constructeur ImageIcon(nom_du_fichier[,"Description"])
getImage(chemin, nom_du_fichier)
getDocumentBase()
getCodeBase()
objetGraphics.drawImage(image, x, y , container)
ImageIcon.paintIcon( container, objet Graphics, x, y)
© Pascal Buguet
Description
Crée une nouvelle URL
Dans une applet seulement une URL.
Dans une application les deux
possibilités.
Renvoie une image
Renvoie l'URL du dossier du document
HTML qui appelle l'applet
Renvoie l'URL de l'applet
Dessine une image
Dessine une icône
Imprimé le 27 mai 2017
Page 35
JAVA – LES APPLETS

Code java
// Applet et images
import java.awt.*
;
import javax.swing.*;
import java.net.*;
public class AppletImage
{
private Image
private ImageIcon
private URL
// Pour les images
// Pour les ImageIcon
// Pour les URL
extends JApplet
imgPhoto1;
iconePhoto2;
urlPhoto2;
public void init()
{
String lsCheminPhoto1 = "images/l.jpg";
String lsCheminPhoto2 = "images/2.jpg";
// La classe Image étant abstraite il faut passer par une méthode de
la classe JApplet : getImage par exemple
// getImage (emplacement de mémorisation sur le serveur, nom de
l'image)
imgPhoto1 = this.getImage(getDocumentBase(), lsCheminPhoto1);
try
{
// Récupère une URL(lieu du code , chemin)
urlPhoto2 = new URL(getCodeBase(), lsCheminPhoto2);
}
catch(java.net.MalformedURLException e)
{
System.err.println("Création d'image impossible : " + "URL
incorrecte");
}
// --- ImageIcon(url, texte)
iconePhoto2 = new ImageIcon(urlPhoto2, "La couverture");
}
public void paint(Graphics g)
{
// --- drawImage(Image, x, y, le container)
g.drawImage(imgPhoto1,0,0,this);
// --- paintIcon(Le container, l'objet graphics , x, y)
iconePhoto2.paintIcon(this,g,300,0);
}
}

Script de la page HTML
<html>
<applet code="AppletImage.class" width="700" height="200">
</applet>
</html>
© Pascal Buguet
Imprimé le 27 mai 2017
Page 36
JAVA – LES APPLETS

Commentaires
On utilise dans cette applet les méthodes "automatiques" appelées par le navigateur( init() et paint()).
Pour récupérer la première photo (que l'on traitera comme une image) nous utilisons la méthode
getImage() qui renvoie une image. Cette méthode exige deux paramètres : l'URL absolue de
stockage du fichier image et le nom du fichier. Pour le lieu nous sollicitons la méthode
getDocumentBase() qui renvoie une URL correspondant au dossier d'origine de l'applet.
imgPhoto1 = this.getImage(getDocumentBase(), lsCheminPhoto1);
Pour récupérer la deuxième photo (que l'on traitera comme une icône) nous récupérons l'URL du
fichier en créant un objet URL. Nous devons passer en argument l'URL de l'applet que nous
récupérons avec la méthode getCodeBase() et le nom du fichier.
urlPhoto2 = new URL(getCodeBase(), lsCheminPhoto2);
Ensuite nous créons un objet icône en passant en argument l'URL précédente et une description.
iconePhoto2 = new ImageIcon(urlPhoto2, "La couverture");
Enfin dans la méthode paint() nous dessinons les images avec respectivement les méthodes
drawImage() et paintIcon()
// --- objetGraphics.drawImage(image, x, y, le container)
g.drawImage(imgPhoto1,0,0,this);
// --- ObjetIcone.paintIcon(Le container, l'objet graphics, x, y)
iconePhoto2.paintIcon(this,g,300,0);
© Pascal Buguet
Imprimé le 27 mai 2017
Page 37
JAVA – LES APPLETS
1.15 UNE ANIMATION AVEC DES JPEG DANS UNE APPLET

Objectif
Une animation (girouette) avec des JPEG (ImageIcon de Swing).
© Pascal Buguet
Imprimé le 27 mai 2017
Page 38
JAVA – LES APPLETS

Le JLabel à quatre faces
import java.awt.*;
import javax.swing.*;
import java.net.URL; // --- Pour les URL
public class AppletAnim1 extends JApplet implements Runnable
{
private ImageIcon photos[] = new ImageIcon[4]; // 4 photos
Thread troncheDeProcessus;
JPanel panneau;
JLabel lblImageIcon;
// --------------public void init()
// --------------{
String lsFichiers[] = {"1.jpg","2.jpg","3.jpg","4.jpg"};
panneau
= new JPanel(new GridLayout(1,1));
lblImageIcon = new JLabel();
panneau.add(lblImageIcon);
getContentPane().add(panneau);
try
{
for(int i=0; i<photos.length; i++)
{
URL urlIcon = new URL(getCodeBase(), "../images/" +
lsFichiers[i]);
photos[i]=new ImageIcon(urlIcon,lsFichiers[i]);
}
}
catch(Exception e) { System.err.println(e.getMessage()); }
}
// ---------------public void start()
// ---------------{
troncheDeProcessus = new Thread(this);
troncheDeProcessus.start();
}
// --------------public void stop()
// --------------{
troncheDeProcessus = null;
}
// -------------public void run()
// -------------{
int i=0;
while(true)
{
lblImageIcon.setIcon(photos[i]);
try { Thread.sleep(1000); }
catch(InterruptedException e) { }
i++;
if(i == photos.length) i = 0;
}
}
}
Note : si vous créez un dossier images au même niveau que le dossier des classes le chemin sera ../images/
© Pascal Buguet
Imprimé le 27 mai 2017
Page 39
JAVA – LES APPLETS

Exercice : Le bandeau déroulant
© Pascal Buguet
Imprimé le 27 mai 2017
Page 40
JAVA – LES APPLETS

Le code java
// --import
import
import
import
Applet et animation d'images (Des icônes en série dans quatre labels)
java.awt.GridLayout;
java.awt.Color;
javax.swing.*;
java.net.*; // Pour les URL
@SuppressWarnings("serial")
public class AppletAnim4 extends JApplet implements Runnable
{
final static int MAX_IMAGES = 7;
final static int MAX_LABELS = 4;
Thread troncheDeProcessus;
JPanel panneau
= new JPanel(new GridLayout(1,MAX_LABELS));
JLabel lblImage[]
= new JLabel[MAX_LABELS];
ImageIcon icIcones[] = new ImageIcon[MAX_IMAGES];
URL urlIcon;
String isFichiers[] =
{
"1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg"
};
public AppletAnim4()
{
super();
}
// --------------public void init()
// --------------{
for(int i=0; i<icIcones.length; i++)
{
try
{
// Récupère une URL (lieu du code s'exécutant, chemin)
urlIcon = new URL(getCodeBase(), "../images/" +
isFichiers[i]);
}
catch(java.net.MalformedURLException e)
{
System.err.println("Création d'image impossible : " +
"URL incorrecte");
}
// --- ImageIcon ( url, texte)
icIcones[i] = new ImageIcon(urlIcon, isFichiers[i]);
}
for(int i=0; i<=MAX_LABELS-1; i++)
{
lblImage[i] = new JLabel();
panneau.add(lblImage[i]);
}
panneau.setBackground(Color.BLACK);
getContentPane().add(panneau);
}
// ---------------public void start()
// ---------------{
troncheDeProcessus = new Thread(this);
troncheDeProcessus.start();
}
// -------------public void run()
// --------------
© Pascal Buguet
Imprimé le 27 mai 2017
Page 41
JAVA – LES APPLETS
{
int liPosition = 0;
while(true)
{
liPosition++;
changerImage(liPosition, liPosition + MAX_LABELS - 1);
if(liPosition == MAX_IMAGES-1) liPosition = 0;
}
}
// -------------------------------------public void changerImage(int aiDebut, int aiFin)
// -------------------------------------{
for(int i=0; i<=MAX_LABELS-1; i++)
{
if(aiDebut+i > MAX_IMAGES-1) aiDebut = aiDebut - MAX_LABELS;
lblImage[i].setIcon(icIcones[aiDebut+i]);
}
try { Thread.sleep(1000); }
catch(InterruptedException e) { }
}
// --------------public void stop()
// --------------{
troncheDeProcessus = null;
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 42
JAVA – LES APPLETS
1.16 UNE APPLET DANS UNE APPLICATION

Objectif
Un code d'applet Java peut être aussi exécuté soit comme une application soit comme une applet.
Ce qui nous nous donne deux types d'utilisation pour deux types de clients.

En mode application

En mode navigateur
© Pascal Buguet
Imprimé le 27 mai 2017
Page 43
JAVA – LES APPLETS

Principes
Le principe de base est que la classe principale doit hériter de la classe JApplet.
Cette classe doit posséder une procédure main().
La méthode init() doit être redéfinie en instanciant un objet de type JFrame.
L'application tournera en mode application.
L'application tournera au travers d'un appel à partir d'une applet contenue dans une page HTML.

Code Java
// --- Applet et Convertisseur Euros-Dollars en Applet - Application
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//import java.lang.*;
// ----------- La fenêtre JFrame
class WPrincipale extends JFrame
// ----------- La fenêtre JFrame
{
private String isCours, isDollars, isEuros;
// --- Les composants graphiques
JPanel panneau = new JPanel(new GridLayout(3,3));
JLabel lblCoursDollar
= new JLabel("Cours du dollar oggi");
JTextField tfCoursDollar = new JTextField("",10);
JLabel lblDollars
= new JLabel("");
JLabel lblEuros
= new JLabel("Euros");
JTextField tfEuros = new JTextField("",10);
JButton cbDollars = new JButton("$");
JLabel lblDollars
= new JLabel("Dollars");
JTextField tfDollars = new JTextField("",10);
JButton cbEuros
= new JButton("e");
// --- Le constructeur
public WPrincipale()
{
panneau.setBackground(Color.cyan);
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String lsInter;
float lfDollars, lfEuros, lfInter, lfCours;
lsInter = tfCoursDollar.getText();
lfCours = Float.parseFloat(lsInter);
if(e.getSource() == cbDollars)
{
lfEuros
= Float.parseFloat(tfEuros.getText());
lfInter
= lfEuros * lfCours;
isDollars = Float.toString(lfInter);
tfDollars.setText(isDollars);
}
if(e.getSource() == cbEuros)
{
lfDollars = Float.parseFloat(tfDollars.getText());
lfInter
= lfDollars / lfCours;
isEuros
= Float.toString(lfInter);
© Pascal Buguet
Imprimé le 27 mai 2017
Page 44
JAVA – LES APPLETS
tfEuros.setText(isEuros);
}
}
};
cbDollars.addActionListener(al);
cbEuros.addActionListener(al);
panneau.add(lblCoursDollar);
panneau.add(tfCoursDollar);
panneau.add(lblDollars);
panneau.add(lblEuros);
panneau.add(tfEuros);
panneau.add(cbDollars);
panneau.add(lblDollars);
panneau.add(tfDollars);
panneau.add(cbEuros);
getContentPane().add(panneau);
pack();
setVisible(true);
}
// --- Les méthodes ad hoc de l'appli
public String getDollars()
{
return tfDollars.getText();
}
}
// --- L'applet
public class AppletAppli extends JApplet
// --- L'applet
{
WPrincipale lWPrincipale;
// --- La méthode main
public static void main(String args[])
{
new WPrincipale();
}
// --- La méthode init()
public void init()
{
lWPrincipale = new WPrincipale();
}
// --- Les méthodes ad hoc de l'applet
public String getDollars()
{
return lWPrincipale.getDollars();
}
// --------------------public String getEuros()
{
return lWPrincipale.tfEuros.getText();
}
// --------------------public String getCours()
{
return lWPrincipale.tfCoursDollar.getText();
}
}
© Pascal Buguet
Imprimé le 27 mai 2017
Page 45
JAVA – LES APPLETS

Commentaires
Le code est composé :


D'une classe JFrame
D'une classe JApplet
Le code de la classe JFrame est tout à fait standard. Il dispose de trois méthodes getXXX() pour les
besoins de l'applet mais ce pourrait être pour d'autres besoins.
Le code de la JApplet est celui qui différencie le tout.
Il comporte deux méthodes d'initialisation :


La méthode init() pour l'utilisation Applet
La méthode main() pour l'utilisation application.
La classe principale dérivée de JApplet :
public class AppletAppli extends JApplet
La méthode main() instancie une fenêtre lorsque l'utilisation se fait en mode application.
public static void main(String args[])
{
new WPrincipale();
}
La méthode init() instancie la même fenêtre dans le cas d'une utilisation de type Applet.
public void init()
{
lWPrincipale = new WPrincipale();
}
La récupération des valeurs
Elle est faite


soit via l'appel d'une méthode
soit via la récupération de la valeur de la propriété du JTextField.
La première technique est plus FullObject.
return lWPrincipale.getDollars();
return lWPrincipale.tfCoursDollar.getText();
© Pascal Buguet
Imprimé le 27 mai 2017
Page 46
JAVA – LES APPLETS
1.17 UTILISER UN FICHIER JAR POUR UNE APPLET

Objectif
L'utilisation d'un fichier JAR est fortement recommandée pour les applets.
Lorsque l'applet est chargée, elle utilise une connexion WEB. Si cette applet utilise des classes
auxiliaires, des fichiers image,… chaque fichier utilisera une connexion vers le serveur WEB, ce qui
s'avère coûteux en connexions, en temps de téléchargement et en temps d'exécution de l'applet. Les
fichiers JAR sont compressés.
La solution consiste à créer et à utiliser un fichier JAR.
Un fichier archive de type JAR est créé avec l'utilitaire JAR.EXE fournit avec le JDK.
Les syntaxes sont les suivantes :
Jar [options]
Jar
cf
fichierAArchiver
fichier.jar
fichiersAArchiver
*.class
L'option c crée le fichier d'archives.
L'option f spécifie que le nom du fichier d'archives est un argument de la ligne de commandes.
Pour de plus amples informations sur cet utilitaire tapez jar /? après l'invite de commandes.

Jar
Jar

Exemples
cf
cf
archive1.jar *.class *.jpg
Applet4.jar
Applet4.class julia4.jpg sandra2.jpg
La balise Applet modifiée
<applet code="Applet4b.class" archive="Applet4b.jar" width="700" height="200" />
Vous ajoutez l'attribut archive="valeur" à la balise.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 47
JAVA – LES APPLETS
1.18
ANNEXE : STRUCTURE DU CODE D'UNE APPLET V1
A titre d'information vous trouverez ci-dessous le code minimal d'une applet dérivée de la classe
Applet.

Code
import java.applet.*;
import java.awt.*;
public class Applet00 extends Applet
{
public void init()
{
setBackground(Color.yellow);
add(new Label("Première Applet"));
}
}

Commentaires
Le code de la classe qui est proposé ici utilise les bibliothèques de classes java.applet et java.awt pour
les composants et la couleur.
La classe est dérivée de la classe Applet.
© Pascal Buguet
Imprimé le 27 mai 2017
Page 48
Téléchargement