IN3A11 : Sujet du TPapplet
Groupe ESIEE, Denis BUREAU, novembre 2007.
(à n'imprimer qu'une seule fois par poste de travail)

1  Les objectifs

Être capable de développer des applettes simples.

5  Applette

Il s'agit ici de créer une applette de toute pièce. Pour cela, suivez scrupuleusement les indications. Par contre, vous devrez trouver par vous-même ce qu'il faut importer, étant entendu que les instructions import truc.machin.*; sont interdites.

5.1  La classe CalcApplet

  1. Créez un nouveau fichier CalcApplet.java pour contenir la classe CalcApplet sans attribut ni constructeur, qui hérite de JApplet.
    Cette applette devra permettre d'ajouter ou de retirer à une liste une note / N, afficher la liste courante et la moyenne courante, tout en gérant les erreurs possibles (essayez-la !)  ; N représente la note maximale admissible et est passé en paramètre à l'applette sous forme d'un entier.
  2. La seule méthode à écrire est init() qui doit commencer par les lignes suivantes :
    		// Il y a un conflit de securite avec les navigateurs courants (incluant
    		// Netscape & Internet Explorer) qui interdisent l'acces a la queue
    		// d'evenements d'AWT -- ce dont les JApplets ont besoin au demarrage.
    		// Ne pas modifier les 2 lignes suivantes :
    		JRootPane rootPane = this.getRootPane();	
    		rootPane.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
             
  3. Elle continue ensuite par l'extraction de l'entier passé en paramètre à l'applette, puis son utilisation pour créer un CalcPanel (voir 5.2 ci-après), puis l'ajout (add) de ce CalcPanel.
    En cas d'exception, faire :
                JLabel lab = new JLabel( e.toString() );
                lab.setVerticalAlignment( JLabel.BOTTOM );
                lab.setHorizontalAlignment( JLabel.CENTER );
                add( lab );
             
  4. Elle se termine dans tous les cas par setVisible( true );

5.2  La classe CalcPanel

  1. Créez un nouveau fichier CalcPanel.java pour contenir la classe CalcPanel qui hérite de JPanel.
    Ce composant graphique contiendra tout ce que l'applette va afficher. Ne pas oublier de lui ajouter (add) tous les composants, et d'ajouter à chaque composant tous ses sous-composants.
  2. Les attributs sont :
  3. Le constructeur (à un paramètre entier) comprendra :
  4. Compilez tout. Utilisez largement la javadoc pour y parvenir.

5.3  Le fichier applette.html

  1. Créez un nouveau fichier applette.html pour pouvoir lancer l'applette. Y mettre :
    <html>
        <head>
            <title>CalcApplet</title>
        </head>
        <body>
            <h1>CalcApplet</h1>
            <hr>
            <applet code="CalcApplet.class"
                width=400
                height=200
                codebase="."
                alt="Votre navigateur comprend la balise &lt;APPLET&gt; mais
                     n'ex&eacute;cute pas l'applet, pour quelqu'autre raison."
            >
                <PARAM  NAME=max  VALUE=20>
                Votre navigateur ignore la balise &lt;APPLET&gt; !
            </applet>
        </body>
    </html>
             
  2. Vous pouvez maintenant exécuter l'applette par la commande :
    appletviewer applette.html
    S'affiche-t-elle correctement ? Que se passe-t-il lorsqu'on clique sur un bouton ?

5.4  La gestion des évènements

  1. Modifiez la classe CalcPanel pour qu'elle implémente l'interface ActionListener.
  2. La méthode à écrire est actionPerformed() (voir la javadoc). Elle devra distinguer 3 cas : clic sur le bouton ajoute, clic sur le bouton supprime, ou évènement inconnu. Dans ce dernier cas, il suffit d'écrire errL.setText( "Bouton inconnu !?" ); Lorsqu'une exception survient, il suffit d'"afficher" l'exception dans errL.
  3. Dans le cas ajoute, il faut récupérer la note saisie, générer une exception si elle n'est pas dans l'intervalle [0,max], l'ajouter à la liste, effacer noteTF, puis mettre à jour l'affichage (voir la procédure maj() ci-dessous).
  4. Dans le cas supprime, il faut récupérer l'indice saisi, supprimer de la liste la note correspondante, effacer indTF, puis mettre à jour l'affichage (voir la procédure maj() ci-dessous).
  5. La procédure maj() doit mettre à jour l'affichage de listeL, moyL (en faisant appel à la fonction moyenne() ci-dessous), et errL.
  6. La fonction moyenne() doit parcourir la liste de notes pour en calculer la moyenne, puis la retourner.
  7. Compilez tout. Utilisez largement la javadoc pour y parvenir.
  8. Exécutez à nouveau l'applette. Se comporte-t-elle correctement ? Testez tous les cas d'erreur. Comparez ce comportement avec celui de l'applette de référence indiquée au 5.1.1.



File translated from TEX by TTH, version 3.74.
On 15 Nov 2006, 14:58.