Les Beans - IUT de Bayonne
Transcription
Les Beans - IUT de Bayonne
Les Beans Principe : ce sont des composants qui peuvent communiquer par événements avec d'autres objets pour leur signaler des modifications de propriétés (membres). Ces objets peuvent alors prendre en compte ces événements et, dans certains cas, opposer un veto à la modification. Gestion des événements simples dans un bean : Un bean peut signaler certains événements à d'autres objets (des modifications d'état d'une propriété bean). Pour cela il faut : Que les objets se soient enregistrés auprès du bean Que le bean signale explicitement les événements Pour autoriser l'enregistrement : • On ajoute aux propriétés (membres) du bean un objet de classe PropertyChangeSupport initialisé à null. • On crée cet objet dans le constructeur par new PropertyChangeSupport(this); • On ajoute au bean les méthodes permettant à d'autres objets de s'enregistrer auprès de lui : public void addPropretyChangeListener(PropertyChangeListener p) { if (nomDuMembrePropertyChangeSupport != null) { nomDuMembrePropertyChangeSupport.addPropertyChangeListener(p); } } et public void removePropretyChangeListener(PropertyChangeListener p) { nomDuMembrePropertyChangeSupport.removePropertyChangeListener(p); } Pour signaler un événement : Lorsque l'on souhaite signaler un événement il suffit de faire : nomDuMembrePropertyChangeSupport.firePropertyChange(info,ancien,nouveau); où info est une chaîne (classe String) de caractères décrivant l'événement ancien est la valeur de la propriété avant modification nouveau est valeur de la propriété après modification Les objets qui sont informés de ces événements simples : • Ils doivent implémenter l'interface PropertyChangeListener • Ils s'enregistrent auprès du bean par la méthode addPropretyChangeListener de celui-ci • Ils surchargent la méthode : public void PropertyChange(PropertyChangeEvent) pour y mettre ce qu'ils font quand l'événement se produit. La classe PropertyChangeEvent : Elle offre les méthodes : Object getNewValue() qui retourne la nouvelle valeur de la propriété (3ème paramètre de firePropertyChange) Object getOldValue() qui retourne l'ancienne valeur de la propriété (2ème paramètre de firePropertyChange) String getPropertyName() qui retourne la chaîne décrivant l'événement (1er paramètre de firePropertyChange) Object getSource() qui retourne l'objet qui a créé l'événement Gestion des événements auxquels on peut s'opposer dans un bean : Un bean peut signaler certains événements à d'autres objets (des modifications d'état d'une propriété bean) et vérifier que ces objets ne s'y opposent pas. Pour cela il faut : Que les objets se soient enregistrés auprès du bean Que le bean signale explicitement les événements Pour autoriser l'enregistrement : • On ajoute aux propriétés (membres) du bean un objet de classe VetoableChangeSupport • On crée cet objet dans le constructeur par new VetoableChangeSupport(this); • On ajoute au bean les méthodes permettant à d'autres objets de s'enregistrer auprès de lui : public void addVetoableChangeListener(VetoableChangeListener v) { nomDuMembreVetoableChangeSupport.addVetoableChangeListener(v); } et public void removeVetoableChangeListener(VetoableChangeListener v) { nomDuMembreVetoableChangeSupport.removeVetoableChangeListener(v); } Pour signaler un événement : Lorsque l'on souhaite signaler un événement il suffit de faire : nomDuMembreVetoableChangeSupport.fireVetoableChange(info,ancien,nouveau); où info est une chaîne de caractères (classe String) décrivant l'événement ancien est la valeur de la propriété avant modification nouveau est valeur de la propriété après modification Cette méthode peut lever une exception de classe PropertyVetoException. Cette exception sera levée si l'un des objets enregistré auprès de lui s'oppose à cette modification. Les objets qui sont informés de ces événements et peuvent s'y opposer : • Ils doivent implémenter l'interface VetoableChangeListener • Ils s'enregistrent auprès du bean par la méthode addVetoableChangeListener de celui-ci • Ils surchargent la méthode : public void VetoableChange(PropertyChangeEvent) throws PropertyVetoException pour y mettre ce qu'ils font quand l'événement se produit. Pour lever une exception et donc opposer leur veto il suffit de faire : throw(new ProperyVetoException(message, evenement)); où message est une chaîne de caractères (classe String) expliquant les raisons du veto evenement est un objet de classe PropertyChangeEvent (en général celui que l'on a reçu en paramètre)