11. DESSINER UN POLYGONE



Documents pareils
Interfaces graphiques avec l API Swing

Programmation par les Objets en Java

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Package Java.util Classe générique

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Java 7 Les fondamentaux du langage Java

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TP1 : Initiation à Java et Eclipse

Corrigé des exercices sur les références

Cours 1: Java et les objets

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

TP1 : Initiation à Java et Eclipse

Java Licence professionnelle CISII,

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Auto-évaluation Programmation en Java

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Généralités sur le Langage Java et éléments syntaxiques.

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Développement Logiciel

TD/TP PAC - Programmation n 3

Tp 1 correction. Structures de données (IF2)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

I. Introduction aux fonctions : les fonctions standards

TD/TP PAC - Programmation n 3

Projet de programmation (IK3) : TP n 1 Correction

Chapitre 10. Les interfaces Comparable et Comparator 1

Desktop Intégration. Rémi Forax

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Publipostage avec Calc

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Utilisation d objets : String et ArrayList

PHPWEBSITE -Tutoriel image

Cours 2 : programmation des interfaces graphiques

Eclipse atelier Java

VOS PREMIERS PAS AVEC TRACENPOCHE

TRAVAILLER SUR LES ORDINATEURS DU LYCEE

Comment bien démarrer avec. NetAirClub GUIDE ADMINISTRATEUR V1.5. Table des matières

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Premiers Pas en Programmation Objet : les Classes et les Objets

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

TP SIN Programmation sur androïde Support : eclipse

Programmation Objet - Cours II

DOCUMENTATION VISUALISATION UNIT

Java Licence Professionnelle CISII,

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Découverte et prise en main de SWEET HOME 3D

Corrigés des premiers exercices sur les classes

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Alcatel OmniPCX Office

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

ACTIVITÉ DE PROGRAMMATION

Chapitre 4 Pierre, papier, ciseaux

Programmer en JAVA. par Tama

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

TecLocal 4.0. Nouveautés de la version 4.0 (notes de mise à jour)

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

INITIATION AU LANGAGE JAVA

Stockage du fichier dans une table mysql:

GESTION DES BONS DE COMMANDE

Synchro et Threads Java TM

Créer une base de données

RMI le langage Java XII-1 JMF

TRAVAUX DIRIGES D'INFORMATIQUE INITIATION A LA MANIPULATION DE WINDOWS 98

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Introduction au langage Java

1. Introduction Création d'une requête...2

TP, première séquence d exercices.

Java3D. Généralités sur la synthèse d'images temps réel. Généralités sur Java3D. d 'après P.Reignier, UJF

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

COURS WINDEV NUMERO 3

Création d'un questionnaire (sondage)

INFORM :: DEMARRAGE RAPIDE A service by KIS

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

Google Drive, le cloud de Google

Programmation en Java IUT GEII (MC-II1) 1

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

LES NOUVEAUTÉS DE ARCON 15 PRO

Threads. Threads. USTL routier 1

SOMMAIRE. Travailler avec les requêtes... 3

Environnements de développement (intégrés)

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

TP 4 & 5 : Administration Windows 2003 Server

Devis et Facturation Mac

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Hermes.Net Workspace Agent

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Transcription:

A. But de la séance Université de Nice - Sophia Antipolis Faculté des Sciences DEUG MIAS MP1 Programmation 2000-01 11. DESSINER UN POLYGONE Dans ce TP nous allons rassembler les résultats des deux TP précédents : la création d'une classe polygone permettant de gérer la liste de ses sommets et la gestion des événements de la souris pour placer les points. Vous allez donc avoir besoin de la classe Polygone.java, faites en sorte d'en avoir un version à jour dans le même répertoire que celui où vous sauvegardez ce TP. L'interface finale ressemblera à ceci: Préparez un fichier PolyDraw.java contenant : import java.awt.*; import java.awt.event.*; import java.util.vector; class PolyDraw extends Frame class PolyDrawCanvas extends Canvas class PolygoneGraphique extends Polygone class PointGraphique extends Point La première classe sera notre fenêtre principale. La deuxième est notre canevas où l'on dessinera le polygone. La troisième étend la classe Polygone pour ajouter la méthode graphique permettant de l'afficher et la dernière fait de même avec la classe Point du package awt. B. Mettre en place les composants graphiques

En vous inspirant des TP sur les interfaces graphiques et des exercices du contrôle continu, vous allez placer les composants graphiques pour obtenir une fenêtre ressemblant à la copie d'écran montrée précédemment. Exercice 11.1 Modifiez le constructeur de la classe PolyDraw pour obtenir une fenêtre: - ayant pour titre "Dessiner un polygone" - avec un fond gris clair (lightgray) - non redimensionnable - s'affichant aux coordonnées 20, 30 de l'écran - quittant l'application lorsque l'on appuie sur la petite case de fermeture - et dont les composant suivent un FlowLayout Exercice 11.2 Modifiez le constructeur de la classe PolyDraw pour ajouter à la fenêtre un Canvas PolyDrawCanvas et un panel. Le panel aura un fond gris clair et suivra un GridLayout en utilisant l'instruction: setlayout(new GridLayout(3,1)) Ce layout dispose les composants suivant une grille de 3 cases sur une colonne. Vous ajouterez ensuite au panel: - Un label fixe qui affichera la chaîne de caractères "Perimetre :" - Un label pour qu'il faudra pouvoir modifier (ce sera donc une variable de la classe) et que l'on utilisera pour afficher la valeur du périmètre. - Un bouton Reset dont on programmera le comportement plus tard NB: N'oubliez pas d'ajouter l'instruction this.pack(); pour que la fenêtre adapte sa taille à son contenu. Exercice 11.3 Ajoutez à la classe PolyDraw une méthode void changeperimeter(string p_text) permettant de modifier la valeur du label affichant la longueur du périmètre ainsi que la méthode main : public static void main(string[] args) (new PolyDraw()).show(); Exercice 11.4 Reprenez le code ci-dessous et complétez le constructeur du canevas pour : - que l'on appelle le constructeur de la classe Canvas - que l'on choisisse un fond noir - que l'on copie la référence à la fenêtre PolyDraw dans la variable prévue à cet effet - que l'on crée un nouveau PolygoneGraphique dont la référence sera placée dans la variable prévue à cet effet class PolyDrawCanvas extends Canvas private PolyDraw mypolydraw; PolygoneGraphique mypolygonegraphique; PolyDrawCanvas(PolyDraw p_polydraw)... public Dimension preferredsize() return new Dimension(300,300); Compilez votre code, CORRIGEZ VOS ERREURS TOUS SEULS COMME DES GRANDS et vérifiez que l'interface ressemble bien à la copie d'écran en première page du sujet. C. Préparer les classes Polygones et Points Exercice 11.5 Nous allons compléter la classe Point: class PointGraphique extends Point PointGraphique (int x, int y)... // Appeler le constructeur de la classe Point public int getintx()... // Renvoyer des abscisses entières en utilisant getx()

public int getinty()... // Renvoyer des ordonnées entières en utilisant gety() // Ici on ajoute une méthode qui permet // d'afficher un point comme un disque rouge. p_graphics.setcolor(color.red); // On choisit la couleur rouge. p_graphics.filloval(getintx()-1,getinty()-1,3,3); // On dessine un disque. Compilez pour vérifier que tout est syntaxiquement correcte (inutile d'exécuter le programme car rien n'a changé dans l'affichage) Exercice 11.6 Nous allons compléter la classe Polygone: Programmez les méthodes suivantes : class PolygoneGraphique extends Polygone public PointGraphique getpointgraphiqueat(int i)... // renvoyer le i eme PointGraphique en utilisant PointAt public void setlastpointgraphiqueat(pointgraphique p)... // remplacer le dernier point s'il existe Ajoutez la méthode d'affichage d'un polygone et commentez chaque ligne pour expliquer l'algorithme int anbpoints = size(); if (anbpoints>0) PointGraphique afirstpoint = getpointgraphiqueat(0); PointGraphique apreviouspoint = afirstpoint; PointGraphique acurrentpoint = afirstpoint; for(int l_i=1; l_i<anbpoints; l_i++) acurrentpoint = getpointgraphiqueat(l_i); p_graphics.setcolor(color.white); p_graphics.drawline(apreviouspoint.getintx(), apreviouspoint.getinty(), acurrentpoint.getintx(), acurrentpoint.getinty()); apreviouspoint.paint(p_graphics); acurrentpoint.paint(p_graphics); apreviouspoint = acurrentpoint; p_graphics.setcolor(color.green); p_graphics.drawline(acurrentpoint.getintx(),acurrentpoint.getinty(), afirstpoint.getintx(),afirstpoint.getinty()); acurrentpoint.paint(p_graphics); afirstpoint.paint(p_graphics);

Compilez pour vérifier que tout est syntaxiquement correct (inutile d'exécuter le programme car rien n'a changé dans l'affichage) D. Répondre aux événements Tout comme au TP dernier nous allons détecter la pression du bouton de la souris et ses mouvements et pour cela nous avons besoin de nous créer un écouteur particulier puis de programmer la réponse aux événements qui nous intéressent : la pression d'un bouton et le mouvement de la souris lorsque le bouton est appuyé. Exercice 11.7 Ajoutez la classe suivante : class PolyDrawMouseListener extends MouseAdapter implements MouseMotionListener public void mousemoved(mouseevent e) public void mousedragged(mouseevent e) Cette classe représente des écouteurs capables de répondre aux boutons (elle étend MouseAdapter) et aux mouvements de la souris (en implantant l'interface MouseMotionListener). Exercice 11.8 Modifiez le constructeur du canevas pour ajouter le code suivant et complétez les morceaux manquants: PolyDrawMouseListener apolydrawmouselistener = new PolyDrawMouseListener() public void mousepressed(mouseevent e) // un bouton est appuyé... // ajouter un GraphicPoint au polygone en récupérant les coordonnées de l'événement // mettre à jour l'affichage du canevas public void mousedragged(mouseevent e) // la souris a bougé avec un bouton enfoncé... // modifier le dernier GraphicPoint du polygone pour suivre la souris // mettre à jour l'affichage du canevas ; this.addmouselistener(apolydrawmouselistener); this.addmousemotionlistener(apolydrawmouselistener); Exercice 11.9 Ajoutez au canevas la méthode affichant sont contenu:...// afficher le polygone : une ligne suffit!!! Compilez et essayez le programme : vous devez pouvoir créer le polygone. Exercice 11.10 Pour effacer le canevas vous allez programmer la réponse du bouton Reset. Pour cela il vous faut une méthode pour vider le polygone de ses points et rafraîchir l'affichage dans le canevas : public void reset()...

Et dans le constructeur de la fenêtre (PolyDraw) ajoutez un écouteur qui appelle la méthode reset() du canevas. ResetButton.addActionListener(new ActionListener() public void actionperformed(actionevent e)... ); E. Calculs sur le polygone Nous allons dans cette partie illustrer comment utiliser les objets polygones créés pour faire des calculs. Exercice 11.11 En vous inspirant du code de la procédure d'affichage de la classe GraphiquePolygone (tout l'algorithme de parcours des cotés du polygone y est décrit) programmez une méthode de calcul du périmètre d'un polygone: public double getperimeter()... // Puis dans la méthode paint() du canevas mettez à jour la valeur du label prévu à cet effet en appelant la méthode de la fenêtre que vous avez préparée et en utilisant le résultat renvoyé par votre méthode. Exercice 11.12 Calcul de l'enveloppe?