TP Java no5 : Le retour des robots

publicité
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
Téléchargement