Séance d ED : Mécanisme des traitements d'événements en langage Java : Java Beans. Programmation d'interface graphique I - Première Partie

Documents pareils
Interfaces graphiques avec l API Swing

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Java 7 Les fondamentaux du langage Java

RMI le langage Java XII-1 JMF

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

LES BIBLIOTHEQUES DE WINDOWS 7

Systeme d'exploitation

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

FICHE DE COURS RESEAU POSTE A POSTE BAC PRO SYSTEMES ELECTRONIQUES NUMERIQUES Champ Professionnel : Télécommunications et Réseaux

ACTIVITÉ DE PROGRAMMATION

Programmation par composants (1/3) Programmation par composants (2/3)

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

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Programmation Orientée Objet

Création d'une interface graphique

Annexe : La Programmation Informatique

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

Compte-rendu de projet de Système de gestion de base de données

TP1 : Initiation à Java et Eclipse

MEGA ITSM Accelerator. Guide de Démarrage

DOSSIER D'UTILISATION

VTX FTP. Transfert de fichiers business par FTP - Manuel de l'utilisateur. Informations complémentaires : info@vtx.

Gestionnaire de procédure Guide rapide

Bases Java - Eclipse / Netbeans

modélisation solide et dessin technique

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

Aide à l utilisation

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Construire des plug-ins pour SAS Management Console SAS 9.1

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

Configurer ma Livebox Pro pour utiliser un serveur VPN

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

LE CONCEPT. Vous pouvez aussi charger une version sur votre PC afin d'assurer votre présentation dans une salle non connectée.

TP SIN Programmation sur androïde Support : eclipse

Reaper : utilisations avancées

CRÉER DES LEÇONS AVEC L'ÉDITEUR DU LOGICIEL 1000 MOTS POUR APPRENDRE À LIRE EN FRANÇAIS, ANGLAIS ET ALLEMAND

Projet de Veille Technologique

INFORM :: DEMARRAGE RAPIDE A service by KIS

THEGREENBOW FIREWALL DISTRIBUE TGB::BOB! Pro. Spécifications techniques


et Groupe Eyrolles, 2006, ISBN :

Générer du code à partir d une description de haut niveau

Installation FollowMe Q server

IRL : Simulation distribuée pour les systèmes embarqués

Utiliser Freemind à l'école

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

Concept-Informatique 2007

TP1 : Initiation à Java et Eclipse

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

Gestionnaire d emploi du temps

1 - Clients 2 - Devis 3 - Commandes 4 - Livraisons 5 - Factures 6 - Avoirs 7 - Modèles

Partager sa connexion Internet via le WiFi avec Windows 8

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

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

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 )

Table des matières. Table des matières

Applet pour visualiser les variables «automate» notifiées

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Guide d utilisation du logiciel TdsTexto 1.0

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

7.0 Guide de la solution Portable sans fil

A l aide de votre vous pouvez visiter un site web!

10. Envoyer, recevoir des mails

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Utiliser Java sans BlueJ

Windows Internet Name Service (WINS)

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

Utiliser Subversion (SVN) avec Tortoise

Dossier I Découverte de Base d Open Office

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

Alfresco Guide Utilisateur

Séance 0 : Linux + Octave : le compromis idéal

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Documentation utilisateur. [EIP] TransLSF

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

1. Personnalisation de la page d'accueil

TP1. Outils Java Eléments de correction

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Serveur de travail collaboratif Michaël Hoste -

Diagramme de classes

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

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

Prise en main du logiciel Smart BOARD

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

SAGE: Introduction. 1 Connections WEB. 2 Généralités. 1.1 Sur le web insset. 2.1 Conception modulaire. Sage. 100-Introduction

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Guide de configuration de SQL Server pour BusinessObjects Planning

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

Chapitre 4 Pierre, papier, ciseaux

II- Préparation du serveur et installation d OpenVpn :

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

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Navigation dans Windows

7 S'abonner aux notifications des nouveaux appels

Transcription:

Séance d ED : Mécanisme des traitements d'événements en langage Java : Java Beans Programmation d'interface graphique I - Première Partie Rappeler le mécanisme de délégation proposée par la version 1.1 (et suivantes) de Java SE pour traiter les événements graphiques. réponse : cette technique consiste à indiquer qu'un objet graphique est écouté par un objet d'une autre classe. Cet autre objet lancera une méthode convenue par Java lors de l'action spécifique de l'utilisateur sur cet objet graphique. Plus précisément on utilise un code comme : import java.awt.*; import java.awt.event.*; Button bt = new Button("Mon Bouton"); EcouteurBouton ecouteur = new EcouteurBouton(); bt.addactionlistener(ecouteur); // l'ecouteur est associe au bouton class EcouteurBouton implements ActionListener { public void actionperformed(actionevent e) { System.out.println("Coucou"); Ici au bouton repéré par la référence bt est associé l'objet repéré par la référence ecouteur. Lorsque l'utilisateur clique sur le bouton, la machine virtuelle Java lance la méthode actionperformed() de l'objet repéré par ecouteur (et cette méthode affiche la chaîne "Coucou"). II - Seconde Partie Construction d'une interface en Java On veut écrire en langage Java un outil qui présente l'interface suivante : 1/6

Figure 1 c'est à dire deux fenêtres, l'une de titre Toolbox, l'autre de titre BeanBox. L'utilisateur de cet outil sélectionne l'un des objets proposés par la fenêtre ToolBox et les déposent à l'intérieur de la fenêtre BeanBox (en hachuré) par "glisser-déposer". Par exemple on a déposé, pour obtenir la vue ci dessus, deux objets de la classe ExplicitButton (deux boutons poussoir "demarre" et "arrete") et un objet de l a Juggler (un jongleur). 4 ) (1 point) Les deux fenêtres ToolBox et BeanBox sont des fenêtres habillés par le gestionnaire de fenêtre. Quelle est la classe du langage Java qui permet d'obtenir de telles fenêtres? C'est la classe java.awt.frame ou plus simplement la classe Frame du paquetage java.awt. 5 ) (2 points) Comment le programmeur doit-il s'y prendre pour faire apparaître une fenêtre comme la fenêtre Toolbox? (on ne demande pas une suite de code mais plutôt les techniques de programmation des interfaces graphiques). On indiquera une arborescence de composants graphiques. Il faut ajouter dans cette frame, des composants graphiques. On peut envisager que chaque ligne est un composant graphique comme un Label et que l'ensemble de ces labels soient mis dans une liste (c'est une réponse acceptable). On aurait donc une architecture de composants comme : label1 (Label) label2 (Label) label3 (Label) labeln (Label) maliste (List) Ce qui donne une arborescence de composants comme : maframe (Frame) 2/6

maframe maliste label1 label2 label3 labeln Mais cette liste comporte en fait des couples (une image, un texte). Il faudrait que la bibliothèque de composant dispose de composants listes qui permettent d'insérer de tels couples. Ce n'est pas encore le cas en Java 1.1 mais cela risque de le devenir (composants Swing?!). En fait, quand on regarde la solution qui a été adoptée, une aire de dessin (Canvas) a été mise, qui contient des dessins des images et des chaînes de caractères ("dessinées par des méthodes comme drawimage() et drawstring()). On a donc : monairedessin (Canvas) Ce qui donne une arborescence de composants comme : maframe (Frame) maframe monairedessin 6 ) (1 point) Indiquer les différentes classes de composants graphiques utilisées pour construire la fenêtre ToolBox et ranger ces classes dans une arborescence d'héritage. Cette arborescence est elle égale à celle que vous avez donnée en réponse à la question précédente? En reprenant les diverses classes citées à la question précédente, ces classes sont rangées dans l'arborescence donnée par les concepteurs de Java. On a, comme arborescence des ces classes : 3/6

Component Window Container List Label Canvas Frame (entre autre Image n'est pas un composant graphique). Cette arborescence de classes est différente de l'arborescence des composants graphiques donnée question précédente. III - Troisième Partie Les mécanismes des Java Beans On veut désormais relier les différents objets qui ont été déposés dans la fenêtre BeanBox : on dira désormais dans la BeanBox. Par exemple on veut, à partir des composants déposés dans la BeanBox comme indiqué par la Figure 1, construire un environnement de sorte qu'en cliquant sur le bouton demarre, l'objet Juggler fasse défiler 3 images qui montrent la mascotte Duke en train de jongler, et en cliquant sur le bouton arrete fait arrêter le jonglage (i.e. le défilement des trois images). Remarque fondamentale : On veut assurer cette liaison sans changer quoi que ce soit aux codes des classes ExplicitButton ou Juggler. Ce sera donc à l'environnement (la Beanbox) de construire tout ce qu'il faut pour assurer ces liaisons. La BeanBox garde trace des objets qui ont été déposés. Lorsqu'on sélectionne un objet dit Bean source, Java nous permet de connaître les écouteurs qui sont susceptibles d'être associés à ce bean source et donc susceptibles d'être déclenchés (par le mécanisme d'introspection qu'on ne demande pas d'étudier ici). Ce mécanisme d'introspection est aussi utilisé pour connaître les méthodes des "Beans but". Par exemple la beanbox affiche le fait que les objets de la classe Juggler possède une méthode startjuggling(...) et on se doute que cette méthode lance l'animation de jonglage. L'interface graphique de la BeanBox permet à l'utilisateur d'indiquer quel est l'objet bean associé (l'écouteur donc) du bean source grâce à un mécanisme de "droite élastique". 4/6

(Ci dessus l'objet bouton demarre est associé au jongleur). Ensuite un fenêtre est affichée indiquant les méthodes susceptibles d'être lancées. Par exemple ci dessous la méthode startjuggling(). Les deux objets "bouton demarre" et le jongleur sont alors reliés par la beanbox et pour réaliser cette liaison, une classe auxiliaire (de nom unique et construit par la beanbox par exemple Hookup_14e8012560) est créée et compilée. Voici l'essentiel du code d'une telle classe : Fichier Hookup_14e8012560.java import sunw.demo.juggler.juggler; import java.awt.event.actionlistener; 5/6

public class Hookup_14e8012560 implements java.awt.event.actionlistener{ public void settarget(sunw.demo.juggler.juggler t) { target = t; public void actionperformed(java.awt.event.actionevent arg0) { target.startjuggling(arg0); private sunw.demo.juggler.juggler target; La beanbox construit ensuite un objet objhook de cette classe Hookup_14e8012560. 7 ) (1 point) Que se passe t'il lorsque la méthode actionperformed() de cette classe est lancée sur l'objet référencé par objhook? Cette méthode lance la méthode startjuggling() sur l'objet target qui a été initialisé par settarget(). Intuitivement cette méthode lance l'exécution du jonglage de l'objet de la classe Juggler. 8 ) (1 point) Cette classe implémente l'interface ActionListener. Indiquer à quel objet parmi ceux visualisés Figure 1 et déposés dans la beanbox, l'objet écouteur référencé par objhook doit être associé. Cet objet objhook doit être associé au bouton "demarre". Ainsi lorsqu'on clique sur le bouton démarre, actionperformed() de objhook est lancé qui lance alors l'exécution du jonglage de l'objet de Juggler. 9 ) (1 point) Juste après la création de l'objet référencé par objhook, la méthode settarget() a été lancé sur cet objet. A quoi cela a t-il servi? La méthode settarget() permet de repérer l'objet but (target!!) sur lequel sera lancée la méthode appropriée. Cette méthode à lancer est liée à une action sur le bean source. Ici cet objet but est le jongleur (objet de la classe sunw.demo.juggler.juggler) 10 ) (2 points) Indiquer le type de code généré par l'environnement BeanBox (on ne demande pas d'écrire du code Java) pour que lorsqu'on clique sur le bouton demarre l'objet jongleur se mette à jongler. On indiquera la suite des instructions généréees juste après la sélection de la méthode startjuggling(). On rappelle qu'à ce moment ci la beanbox connaît les deux objets à relier ainsi que leurs méthodes. La beanbox crée alors un classe Hookup_..., la compile, crée un objet hookup de cette classe et ajoute une ligne de code indiquant que le Bean Source a pour écouteur cet objet hookup. Elle lance la méthode settarget() sur cet objet en lui passant l'objet Bean but et tout est alors relié et construit. Remarque finale : Ce qui est remarquable en Java c'est que tout ce code est construit de manière dynamique par le mécanisme d'introspection qui permet de construire dynamiquement un objet d'une classe sans connaître le nom de cette classe à la compilation, mais seulement à l'exécution, puis de connaître les méthodes d'un objet en le lui demandant au moment de l'exécution (quel type de listener as tu?). 6/6