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)

Documents pareils