Salut,
rien ne t'empêche de créer tes propres évenements.
tu créés une interface par exemple :
1 2 3
| public interface ISaveListener {
void save();
} |
dans ta classe de window, tu déclares une variable :
private List<ISaveListener> saveListeners=new ArrayList<ISaveListener>();
et tu ajoutes 3 méthodes :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public synchronized void addSaveListener(ISave savelistener) {
if ( savelistener==null ) throw new NullPointerException());
if( !saveListeners.contains(savelistener) ) saveListeners.add(savelistener);
}
public synchronized void removeSaveListener(ISave savelistener) {
saveListeners.remove(savelistener);
}
protected synchronized void fireSaveEvent() {
for(ISaveListener listener : saveListeners ) {
try {
listener.save();
}
catch(Throwable t) {
t.printStackTrace(); //(ou log)
}
}
} |
et dans l'action listener de ton bouton, tu appelles fireSaveEvent();
ta classe cliente n'a qu'a faire :
1 2 3 4 5 6 7 8 9 10
| MyWindow window = new MyWindow();
window.addSaveListener(new ISaveListener() {
public void save() {
// ici faire la sauvegarde
}
};
// afficher la fenêtre
... |
tu peux passer en paramètre de la méthode save() le modèle qui stocke les données, ou n'importe quoi qui permette d'y accèder
Partager