Skip to topic | Skip to bottom
Home
Minfo05
Minfo05.GlooTDjavabeansr1.3 - 30 Nov 2005 - 22:09 - PhilippeCollettopic end

Start of topic | Skip to actions

TP: Java Beans

PhilippeCollet, d'après des éléments de TP de MichelBuffa

Introduction

Dans le cadre de ce TP, vous allez utiliser et créer des Java Beans autres que ceux qui sont associés aux composants graphiques AWT et Swing.

Les onglets Swing, Conteneurs Swing, etc. vous donnent accès à une partie des java beans fournis en standard.

Les versions Pro et Enterprise fournissent en standard un grand nombre de beans :

Vous pouvez les utiliser par simple drag and drop dans la fenêtre d'édition visuelle. Pour chaque bean, et chaque composant SWING est un bean, vous pouvez éditer ses propriétés interactivement.

Créez un nouveau projet, puis faites Fichier/Nouveau et choisissez "Application".Ceci va générer dans votre projet un squelette minimal d'une application graphique (Une classe principale qui crée une JFrame avec un JPanel dedans). Attention l'assistant va d'abord vous demander le nom de la classe principale (qui n'est pas une JFrame) puis le nom de la fenêtre principale (et c'est la classe principale qui va tout bien préparer pour que la JFrame démarre).

Utilisation d'un bean externe dans l'IDE puis utilisation dans l'application

Récupèrez donc cette archive, et dézippez-la dans le répertoire courant de votre projet (peu importe, en fait). Il s'agit du IceBrowser, un browser HTML écrit 100 % pur java (cette version gratuite est un peu ancienne maintenant, elle ne supporte pas tous les standards de présentation du web, mais pour la taille de l'archive, cela reste une belle réalisation). Le .jar contient 3 beans. On va rajouter ces beans à la palette de composants :

  1. Utilisez Outils/Configurer les bibliothèques. Faites Nouveau pour créer une nouvelle bibliothèque. Donnez-lui un nom en Français. "Ice Browser" par exemple. Indiquez l'emplacement du fichier .jar que vous venez de récupèrer. Ce que nous venons de faire c'est donner un nom en français à un fichier jar (que JBuilder apelle une bibliothèque car associé à un CLASSPATH).
  2. Basculez du mode "builder d'interface" en autre chose. Par exemple double-cliquez sur un fichier source. Ceci est une précaution pour éviter quelques comportements bizarres de JBuilder... Utilisez Outils/Configurer la palette. Cliquez sur le bouton "Ajouter" et donnez un nom à un nouvel onglet (page). Par exemple "New Beans". Sélectionnez "New Beans" dans la liste, pour le moment cet onglet est vide. Sélectionnez maintenant l'onglet "Ajout de composants" et ajoutez la bibliothèque "Ice Browser" que vous avez défini en 1.
  3. Cliquez maintenant sur le bouton "Ajouter depuis la bibliothèque sélectionnée".
  4. Voilà trois beans disponibles.

Mettez donc le IceBrowser (le plus complet des 3) dans la JFrame, position "Center".

La fenêtre visuelle devrait ressembler à ceci :

Compilez, exécutez. Tapez des URLs ça devrait marcher (n'oubliez pas http:// devant). Vous pouvez aussi utiliser icebrowser comme une classe normale. La documentation complète est dans l'archive et a du être décompactée avec le jar.

Lancez l'outil "Bean Insight" et allez chercher ice.iblite.IceBrowser pour introspecter la bête. Observez les évènements et les propriétés du Bean.

Ajoutez un bouton "Home" en zone nord pour revenir a page de google (http://www.google.fr). Faites un maximum d'opérations avec l'éditeur d'interaction (l'inspection du IceBrowser a du vous montrer la méthode à appeler).

Ecriture d'un composant horloge

On commence un nouveau projet dans un endroit qui vous convient. Faites Fichier/Nouveau/java Bean, ok pour les options par défaut (c-a-d que toute nouvelle classe est créée par défaut dans ce package). C'est nécessaire pour que l'assistant de création de Bean puisse s'y retrouver (il n'aime pas du tout générer des trucs dans un package par défaut).

Appelez votre bean Clock. Ajoutez à son interface graphique un label et débrouillez-vous pour qu'un Thread affiche l'heure dans le label en permanence. Faites que le ClockBean implémente l'interface Runnable en fournissant la méthode run comme suit (à lire et à comprendre avant de recopier !) :

public void run() {
   while(true) { 
     Calendar calendar = new GregorianCalendar();
     setText("" + calendar.get(Calendar.HOUR_OF_DAY) + ":" 
                 + calendar.get(Calendar.MINUTE) 
                 + ":" + calendar.get(Calendar.SECOND));
     try {
      Thread.sleep(1000);
      } catch (InterruptedException e) {
      e.printStackTrace();
      }
   }
} 

Compilez le projet. Selectionnez votre fichier.java et appelez Outil/BeanInsight, l'analyseur de Bean par introspection. N'oubliez pas de cliquer sur "voir les détails".

Cliquez maintenant sur l'onglet "Bean" et balladez-vous sur les divers onglets...Allez dans l'onglet BeanInfo et générez un BeanInfo. Regardez le résultat produit. Faites des essais en "exposant" le JLabel et en regénérant, puis en générant des "getter" et "setter". Vous pouvez aller dans l'onglet Propriétés et ajouter des propriétés si vous voulez. Regardez l'effet sur le fichier source et sur le source du BeanInfo correspondant.

Appelez le constructeur d'archives (dans les wizards). Choisissez le type "Base" (il n'y a pas de type "JavaBean", de temps en temps, on se demande à quoi ils pensent quand ils développent !), puis donnez lui un nom significatif comme ClockBean et associez un fichier dans le répertoire du projet (ClockBean.jar semble convenir), sélectionnez "tout inclure..." et terminez l'assistant. Construisez le projet, cela devrait générer le jar qui va bien.

Ajoutez votre Bean dans la palette des composants :

  • N'oubliez pas de créer une bibliothèque Jbuilder à partir de votre ClockBean.jar
  • lors de l'insertion sélectionnez "par BeanInfo" et non pas par Manifest puisque JBuilder ne sait pas faire automatiquement d'archives JavaBean !

Attention, en insérant un nouveau bean dans la palette, vous pouvez déstabiliser JBuilder si votre bean est buggé : lorsque vous utiliserez le bean dans le concepteur, il va effectivement être instancié directement dans JBuilder...

Test du composant horloge

Fermez le projet courant. Ouvrez le projet précédent, celui avec l'icebrowser. Rajoutez le bean horloge dans le JPanel principal. Que remarquez-vous ?

Application aux bébêtes

Dans votre projet de bébêtes (si vous n'avez pas un projet stable pour vos bébêtes, repartez du point de départ du TP sur les patrons de conception?), transformez le champ de bébêtes en Bean :

  • Créez un constructeur par défaut
  • Grâce à l'éditeur de Bean, créez automatiquement les Getter/Setter nécessaires.
  • Contrôlez le démarrage de la simulation par une opération (publique).

Packagez votre Bean comme vous savez faire maintenant, placez le dans la palette.

Créez ensuite une nouvelle Frame (avec l'assistant de création) avec une nouvelle méthode main et testez le tout.

La transformation des champs en Java Beans n'est pas une fonctionnalité demandée pour le TP long/mini projet.

-- PhilippeCollet - 30 Nov 2005
to top


You are here: Minfo05 > GlooTDjavabeans

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback