210 votes

Créer un événement personnalisé en Java

Je veux faire quelque chose comme ça en Java, mais je ne sais pas le moyen :

Quelle événement » objet 1 dis « Bonjour » » arrive, alors s’opposer 2 répond à cet événement en disant « Bonjour ».

Quelqu'un peut me donner un code Astuce ou échantillon ?

453voto

aioobe Points 158466

Vous voudrez probablement se pencher sur le modèle observateur.

Voici un exemple de code pour vous aider à démarrer :

29voto

Bozho Points 273663

Ce que vous voulez est une implémentation du modèle de l’observateur. Vous pouvez faire vous-même complètement, ou utiliser les classes java comme et

22voto

GlassGhost Points 1129

Il y a 3 façons différentes que vous pouvez souhaiter pour cela:

  1. Thrower à l'intérieur de l' Catcher
  2. Catcher à l'intérieur de l' Thrower
  3. Thrower et Catcher à l'intérieur d'une autre classe dans cet exemple, Test

LE TRAVAIL GITHUB EXEMPLE je SUIS en CITANT les valeurs par Défaut de l'Option 3, à essayer les autres simplement en commentaire l' "Optional" bloc de code de la classe, vous voulez être en principal, et de l'ensemble de la classe comme l' ${Main-Class} variable dans l' build.xml le fichier:

4 Choses nécessaires à jeter de côté code:

import java.util.*;//import of java.util.event

//Declaration of the event's interface type, OR import of the interface,
//OR declared somewhere else in the package
interface ThrowListener {
    public void Catch();
}
/*_____________________________________________________________*/class Thrower {
//list of catchers & corresponding function to add/remove them in the list
    List<ThrowListener> listeners = new ArrayList<ThrowListener>();
    public void addThrowListener(ThrowListener toAdd){ listeners.add(toAdd); }
    //Set of functions that Throw Events.
        public void Throw(){ for (ThrowListener hl : listeners) hl.Catch();
            System.out.println("Something thrown");
        }
////Optional: 2 things to send events to a class that is a member of the current class
. . . go to github link to see this code . . .
}

2 Choses nécessaires dans un fichier de classe pour recevoir des événements à partir d'une classe

/*_______________________________________________________________*/class Catcher
implements ThrowListener {//implement added to class
//Set of @Override functions that Catch Events
    @Override public void Catch() {
        System.out.println("I caught something!!");
    }
////Optional: 2 things to receive events from a class that is a member of the current class
. . . go to github link to see this code . . .
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X