Skip to content

Instantly share code, notes, and snippets.

@Riduidel
Created June 29, 2011 13:38
Show Gist options
  • Select an option

  • Save Riduidel/1053852 to your computer and use it in GitHub Desktop.

Select an option

Save Riduidel/1053852 to your computer and use it in GitHub Desktop.
Un bean tout simple avec envoi d'événements
public class Bean {
/**
* Avec le PropertyChangeSupport, vous n'avez aps besoin d'envoyer vous-même les événements,
* il s'en occupe (et il le fait mieux que vous, croyez-moi)
*/
private PropertyChangeSupport support = new PropertyChangeSupport(this);
/**
* Notre champ name ne change pas d'un iota
*/
private String name;
/**
* Les PropertyChangeEvent portent le nom de l'attribut qui a changé.
* Pour éviter la multiplication des chaînes, l'usage veut qu'on définisse une constante
* pour chaque propriété qui envoie un événement
*/
public static final String NAME = "name";
/**
* Le getter ne change pas d'un pouce
*/
public String getName() { return name; }
/**
* Le setter change pas mal, puisque, pour éviter les boucles d'événements qui arrivent
* facilement, on vérifie que la nouvelle valeur est différente de l'ancienne
* @param name nouvelle valeur. Si elle est différente, un événement sera envoyé
*/
public void setName(String newName) {
// La, par contre, il y a des subtilités
if(
// si this.name est null, une valeur différente est une valeur non null
(this.name==null && newName!=null) ||
// par contre, si this.name est non null, on peut appeler ses méthodes sans craindre
// le NullPointerException pour vérifier que la nouvele valeur est différente
(this.name!=null && !this.name.equals(newName))
) {
String oldName = this.name;
this.name = newName;
support.firePropertyChange(NAME, oldName, newName);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment