include "../../global.php" ; hheader(array("../../", "TD 2, Concurence dans l'interface", "TDdesc2")); function charge ($texte) { if($_GET["charge"] == "o") { echo "".$texte."";} } ?>
Le travail dirigé 2 se réalise en deux séances de laboratoire. Il consiste à implémenter une application de décompte de jetons (tokens) dans un fichier. Les jetons correspondent à des mots et des délimiteurs.
Ce travail met en application les principes de traitement parallèle entre des composants Swing. L'utilisation de la concurrence est très importante pour créer des applications interactives qui ne bloquent pas et qui permettent à l'utilisateur de demeurer actif et en contrôle.
SwingWorker
facilite la création de tels patrons. Ainsi, le travail du décompte de jeton doit se
faire sous un SwingWorker.
JProgressBar devient
un écouteur de changements d'états de la tâche. Dès que la tâche progresse, elle transmet
un tel événement et la barre se met à jour.
L'application doit satisfaire les exigences suivantes :
JFileChooser de Swing, ou en écrivant le nom dans un
champ de texte. Le nom spécifié avec le filechooser doit s'insérer dans le
champ de texte.
CompteurJetons.java pour
compter les jetons d'un fichier. Cette classe ne doit pas être modifiée
JProgressBar
Pour avoir une idée concrête des exigences, consultez cette série d'images.
Il n'est pas obligatoire d'utiliser le modèle MVC, mais la correction en tiendra compte à titre de point positif.
Plusieurs tutoriels disponibles sur le site de java.sun.com sont pertinents
pour réaliser ce TD. Il est important de bien les maîtriser avant d'entamer le TD.
Dans un premier temps, vous pouvez réaliser l'application sans vous soucier d'encapsuler
le CompteurJetons dans un fil d'exécution SwingWorker et, par
conséquent, sans permettre l'annulation et l'affichage du progrès de la tâche. Cette
implantation démontre d'ailleurs clairement le manque de réactivité d'une telle approche.
De cette version, vous pouvez alors passer à l'encapsulation du
CompteurJetons dans un fil d'exécution séparé ainsi qu'à l'interconnection du
composant JProgressBarr et du SwingWorker par l'écoute
d'événements du type PropertyChangeEvent, puis finalement à la gestion de
l'annulation du SwingWorker.
Le travail est évalué selon les critères suivants :
java <nom du pacquetage>/Main ;
Votre application devrait avoir les classes/fichiers suivantes :
compteurjetons
avec la hiérarchie de fichier normale de
NetBeans :Il n'y a pas de rapport à remettre mais insérez les commentaires pertinents directement dans le code.
Le dépôt de votre code doit être fait sous la forme d'une archive .zip ou .tar contenant les fichiers ci-dessus et tout autre fichier nécessaire au bon fonctionnement de l'application.
Il doit être possible de rouler le code en exécutant la fonction "main" du fichier Main.java.
Le dépôt se fait électroniquement sur le site Moodle.