2010-11-09 9 views
4

J'ai un objet Java dont l'état change au cours du temps. Lorsque l'un des champs de l'objet atteint une certaine valeur, je souhaite qu'un événement externe soit déclenché. Je sais que Swing gère ce modèle avec les écouteurs - et j'utilise Swing pour ce projet - mais je ne suis pas sûr du type d'écouteur qui s'appliquerait à ce cas. L'état de l'objet n'est pas modifié par l'utilisateur, et les récepteurs semblent être déclenchés uniquement par les actions des utilisateurs.Déclencher des événements en Java lorsque l'état d'un objet change

Modifier: L'objet que je surveille n'est pas lui-même un composant Swing - il s'exécute en arrière-plan dans le thread principal.

+0

Est-ce que l'objet back-end écrit par vous, par exemple. pouvez-vous le modifier? Il ne déclenchera aucun événement sauf s'il contient du code qui le fait. – fish

Répondre

2

Que cet état soit modifié ou non par l'utilisateur n'a pas vraiment d'importance. Vous pouvez appeler les callbacks d'écoute de la méthode qui change l'état et assurez-vous que l'état de l'objet peut être modifié que par cette méthode:

class A { 
    public void changeState(State newState) { 
     state = newState; 
     for (SomeEventListenerInterface el : listeners) { 
       el.nofity(this, newState); 
     } 
    } 
} 
1

et les auditeurs semblent être déclenché que par les actions des utilisateurs .

Pas toujours. Par exemple, lorsque vous modifiez la propriété de nombreux composants Swing (arrière-plan, police, etc.), un PropertyChangeEvent est déclenché.

Je suggère que vous pouvez également utiliser cet événement. Lisez la section du tutoriel Swing sur How to Write a Property Change Listener pour un exemple.

+0

Merci - mais l'objet que je surveille n'est pas en fait un composant Swing (il fonctionne en arrière-plan dans le thread principal). – chimeracoder

+0

@thebackhand, Il ne doit pas nécessairement s'agir d'un composant Swing. Je vous ai donné le mauvais lien à regarder. Vous pouvez utiliser la classe PropertyChangeSupport pour vous aider à enregistrer les écouteurs et déclencher les événements – camickr