TP Java no5 : Le retour des robots IUP I.I.E.S 1 13 Mai A. Lemay Objectifs du TP : Créer des applications graphiques, utiliser la documentation, Javadoc, ... Exercice 1: les robots reviennent Nous allons revenir sur le TP numéro 2. On y faisait bouger un petit robot. Nous allons maintenant réaliser la fenêtre dans laquelle le robot évolue. Commencez par récupérer le fichier décrivant la classe Robot que vous avez réalisé (Robot.java 1 ). Question 1.1: Petite fenêtre Une fenêtre en java est un objet de type Frame. Cet classe est décrite sur la documentation de l’API de Java (voir le site de sun http://java.sun.com/). Dans la documentation, on voit toutes les méthodes dont on dispose pour manipuler une fenêtre. Réalisez une petite application qui crée une fenêtre, puis l’affiche (méthode show()). Notez que la classe Frame fait partie de la bibliothèque java.awt (c’est indiqué en haut de la page de la documentation de Frame). Vous devez donc ajouter la ligne suivante au début du fichier de votre application pour pouvoir l’utiliser : import java.awt.*; Question 1.2: fenêtre de robot Une fenêtre de robot sera une fenêtre particulière. Créez la classe FenetreRobot. Celle-ci devra ”hériter” de la classe Frame. Elle disposera en outre d’un robot. Quand on crée la fenêtre, on crée également ce robot. Utilisez les fonctions setTitle, setSize et setBackground pour mettre en forme votre fenêtre. Question 1.3: et le robot ? Nous allons maintenant nous intéresser à l’affichage du robot. La méthode qui affiche un fenêtre est la méthode paint() (la classe Frame hérite de cette fonction grâce à la classe Container). Cette fonction a la forme suivante : public void paint(Graphics g) Les objets de type Graphics permettent de faire des dessins. Utilisez cette classe pour dessiner le robot. Question 1.4: Fermez la fenêtre Vous avez sûrement remarqué que notre fenêtre souffre d’un sérieux handicap : on ne peut pas la fermer ! En effet, rien n’est prévu actuellement pour réagir lors des manipulations sur la fenêtre (tel que l’appui sur le bouton permettant de fermer la fenêtre). L’objet qui permet ceci est un ”écouteur de fenêtre” (WindowListener). Pour utiliser cet objet, deux opérations sont à réaliser : 1. la classe que nous sommes en train de construire doit implémenter l’interface WindowListener (recherchez dans la documentation sa description). Elle disposera alors de différentes méthodes 1 Si vous ne disposez plus de ce fichier, une copie est disponible sur le site web du cours. pour réagir aux différents événements qui peuvent se produire. Il faudra alors indiquer que lorsqu’on appuie sur le bouton pour fermer la fenêtre, on ferme l’application (commande System.exit(0);). 2. On doit ajouter l’objet qui va effectivement ”écouter la fenêtre” et qui va activer les fonctions qu’on vient d’écrire. Ajouter la commande addWindowListener(this); dans votre constructeur. Notez que l’interface WindowListener fait partie de la bibliothèque java.awt.event. N’oubliez donc pas d’ajouter import java.awt.event.*; au début de votre code. Question 1.5: Move your body On va maintenant faire bouger le robot à l’aide du clavier. Il faut utiliser un ”écouteur de clavier” (KeyListener). La démarche est la même que pour les ”écouteurs de fenêtre”. Les fonctions utilisés prennent en entrée un ”événement de clavier” (KeyEvent). Vous pouvez aller voir les détails de cette classe pour voir comment savoir quelle touche a été appuyée. Question 1.6: téléportation On veut maintenant pouvoir ”téléporter” le robot à l’aide de la souris (lorsqu’on appuie quelque part sur l’écran, le robot s’y place directement). La gestion de la souris se fait grâce aux ”écouteurs de souris” (MouseListener). Réalisez ceci. Exercice 2: Documentation Question 2.1: Le robot Nous allons maintenant créer une petite documentation sur les classes que nous avons crées. Dans la classe Robot, observez les commentaires qui précèdent chacune des méthodes. Ceux-ci sont de la forme suivante : /** * Crée un robot aux coordonnées x et y en lui donnant un nom * * @param x la première coordonnée du robot * y la deuxième coordonnée du robot * nom le nom du robot * */ public Robot(int x, int y, String nom) { ... } On indique ici des informations sur la méthode. Avec @param, on indique chacun des arguments, suivi d’un commentaire sur l’argument. La fonction présentée ici ne retourne rien (void). Si elle avait retourné quelque chose, on aurait ajouté * * @return voici un commentaire sur ce que renvoie la fonction * Utilisez la commande javadoc Robot.java pour générer une documentation automatiquement sur la classe Robot. Consultez la avec votre navigateur. 2 Question 2.2: FenetreRobot Commentez de la même manière la classe FenetreRobot, Utilisez javadoc pour générer la documentation pour tous vos fichier java (javadoc *.java). Vérifiez avec votre navigateur. Exercice 3: Applet Java Question 3.1: Robot sur internet On va maintenant mettre notre robot sur internet. Java permet de faire des applications qu’on peut insérer directement dans une page web. On appelle ces applications internet des ”applets”. La classe Applet décrit ces applets. La classe Applet est fortement similaire à la classe Frame aux différences suivantes : • pas besoin d’”écouteur de fenêtre”, ce n’est pas une fenêtre, • dans une applet, on n’utilise en général pas de constructeur. Par contre, on utilise la fonction init() pour initialiser notre applet (on y met tout ce qu’on mettrait habituellement dans le constructeur), • certaines fonctions ne sont pas les mêmes que pour les Frame. Réalisez la classe AppletRobot qui réalise la même chose que FenetreRobot sous forme d’applet. Vous pouvez tester votre applet en récupérant le fichier test applet.html (vous pouvez l’ouvrir avec emacs pour voir ce qu’il contient et le tester avec votre navigateur). Question 3.2: Ardoise Magique Réalisez un programme, puis une applet qui permet de dessiner de la même manière qu’une ardoise magique (jetez un coup d’oeil sur http://www.grappa.univ-lille3.fr/˜lemay/java pour un exemple). 3