Cet article est également publié sur le site personnel https://ifuyao.com/blog/java-event/

Crois - le. Java Amis du développement,La plupart d'entre eux ont étudié ou au moins appris Java GUI Programmé,Il y a beaucoup d'événements et de liens de contrôle,Quand on a besoin de cliquer sur un bouton pour faire quelque chose,En fait, il s'agit d'enregistrer un auditeur pour ce contrôle de bouton - poussoir qui gère raisonnablement les événements de clic.En outre,Spring Framework Il y a aussi beaucoup d'endroits où les mécanismes de gestion des événements sont utilisés,Par exemple: ApplicationContextEvent Et ses sous - classes,Représente le démarrage du conteneur、Arrêtez!、Fermer、Rafraîchir et autres événements.Cet article vous présente Java Mécanisme de gestion des événements pour,Des exemples seront également utilisés pour illustrer,Comment déclencher et gérer élégamment un événement personnalisé.

Modèle d'événement délégué

Java Depuis 1.1 Ensuite, sur la base du modèle d'événement délégué,Définit une façon normalisée et cohérente d'obtenir et de traiter les événements.L'idée est très simple,Événement spécifique initié par la source de l'événement,Et envoyer l'événement à un ou plusieurs auditeurs d'événements,Et l'auditeur est en attente tout au long de ce processus,Jusqu'à ce que l'événement soit reçu,Ensuite, gérez l'événement et retournez à.C'est facile à mettre en œuvre.:

  • Définir les événements
  • Implémenter une interface de moniteur spécifique,Recevoir un type particulier d'événement
  • Code de mise en œuvre,Inscription(Ou annuler) L'auditeur en tant que récepteur d'un type d'événement particulier
  • Déclenchez l'événement au bon moment

Composants de base

In Java Dans ce mécanisme de gestion d'événements , Contient trois éléments de base :

  1. Événements Objet de l'événement, Décrire le changement de phase .Comme dans GUI Cliquez sur l'une des actions ,In Spring Framework Démarrage et arrêt du conteneur central , Plus comme le démarrage d'un ordinateur 、Éteignez、Dormance, Expiration du cache , Attention au numéro public 、 Fermez et attendez .

  2. Source de l'événement Peut être n'importe quel objet , Il a la capacité de déclencher des événements . Généralement enregistré dans cet objet (Ou annuler)Moniteur, De plus, les déclencheurs d'événements sont généralement ici . Une source peut produire plusieurs événements différents , Pour enregistrer les auditeurs d'événements séparément pour différents types d'événements , Et chaque type d'événement peut enregistrer un ou plusieurs auditeurs .

  3. Moniteur d'événements Une classe qui implémente une interface spécifique , Elle exige la mise en oeuvre d'une approche spécifique à un événement particulier , Et doit être enregistré pour cet événement particulier .

Alors la question se pose, Comment déclencher et gérer un événement personnalisé avec élégance ?

Événements personnalisés

In Java Les événements personnalisés sont très simples . Compte tenu de la nécessité de lier les comptes sociaux dans toutes les applications , Prenons l'exemple , Impression simple d'un enregistrement lors de la liaison ou du débranchement d'un compte social .

Définissez d'abord un objet d'événement ,Les codes sont les suivants::

public class SocialEvent extends EventObject {
private static final long serialVersionUID = -5473622737706032666L; public static final int WECHAT_BIND = 1;
public static final int WECHAT_UNBIND = 2;
public static final int WEIBO_BIND = 3;
public static final int WEIBO_UNBIND = 4; private int socialType; public SocialEvent(Object source, int socialType) {
super(source);
this.socialType = socialType;
} public int getSocialType() {
return socialType;
} public void setSocialType(int socialType) {
this.socialType = socialType;
}
}

La classe d'événements doit être EventObject Sous - classe.Il convient de mentionner que, Les objets d'événements représentent généralement une classe plutôt qu'un événement , C'est - à - dire qu'il est raisonnable de combiner une catégorie d'événements plutôt qu'un concept d'événement .

Et puis..., Nous implémentons une logique de gestion d'événements , C'est - à - dire l'auditeur d'événements :

public class SocialEventListener implements EventListener {
public void onSocialChanged(SocialEvent event) {
switch (event.getSocialType()) {
case SocialEvent.WECHAT_BIND:
System.out.println("Wechat bind.");
break;
case SocialEvent.WECHAT_UNBIND:
System.out.println("Wechat unbind.");
break;
case SocialEvent.WEIBO_BIND:
System.out.println("Weibo bind.");
break;
case SocialEvent.WEIBO_UNBIND:
System.out.println("Weibo unbind.");
break;
default:
System.out.println("Bad social type.");
break;
}
}
}

En outre, Il nous faut une source d'événements :

public class Social {

    private List<SocialEventListener> listeners;

    public void addListener(SocialEventListener listener) {
if (listeners == null) {
listeners = new ArrayList<>();
}
listeners.add(listener);
} public void removeListener(SocialEventListener listener) {
if (listeners != null) {
listeners.remove(listener);
}
} public void emitEvent(SocialEvent event) {
for (SocialEventListener listener : listeners) {
listener.onSocialChanged(event);
}
} public List<SocialEventListener> getListeners() {
return listeners;
} public void setListeners(List<SocialEventListener> listeners) {
this.listeners = listeners;
}
}

Ici, Nous avons défini des classes spécialisées Social Comme source d'événements ,En fait, La logique de déclenchement et d'enregistrement des événements peut être implémentée dans n'importe quelle autre classe , Comme dans la classe de démarrage .

Au fait...,On est là. Java GUI En programmation, En général, il suffit d'enregistrer l'auditeur d'événements pour le composant , Sans tenir compte de la logique de déclenchement de l'événement , C'est parce que leurs événements sont automatiquement déclenchés par le système .

Détails spécifiques de la mise en œuvre du Code , Veuillez consulter le code source Demo Source Code

Une société littéraireJava Plus d'articles sur le mécanisme des événements

  1. Java Mécanisme de l'événement

    java Le mécanisme de l'événement se compose de trois parties :Événements.Moniteur d'événements.Source de l'événement. 1.Événements.Généralement hérité dejava.util.EventObjectCatégorie, Encapsule l'objet source de l'événement et les informations relatives à l'événement ,Pourlistener Parmi les méthodes correspondantes ,Faire ...

  2. 【React】354- Un article à travers React Principe du mécanisme des événements

    Aperçu général Principalement divisé en4 Un gros morceau , Principalement en combinaison avec la paire source react Principe du mécanisme de l'événement Analyse, J'espère que ça te donnera raison react Les mécanismes des événements sont mieux compris et mieux compris . Bien sûr, il y a des choses qui ne sont pas claires ou qui ne sont pas assez bien comprises , Et s'il vous plaît, grands dieux . ...

  3. Daniel t'a appris javaMécanisme de chargement de classe,Ne le ratez pas.,Ça vaut la peine d'être collecté.!

    Beaucoup de gens ont raison.java Les mécanismes de chargement des classes sont très résistants , Parce que c'est si difficile à comprendre , Mais en tant qu'excellent javaIngénieur, Il faut quand même java Recherche sur le mécanisme de chargement des classes et apprentissage , Parce que ça nous aidera beaucoup dans notre futur travail ,Parce qu'il estjav ...

  4. Je comprends.javaMécanisme anormal

    1. Aperçu de l'exception 1.1Qu'est - ce qu'une anomalie?? Anomalie: Un événement d'exception de programme causé par un problème externe s'est produit pendant l'exécution du programme , L'exception qui s'est produite interrompt le fonctionnement du programme .(InJava Dans un langage de programmation orienté objet ) L'exception elle - même est un objet , Créer une exception, c'est créer un ...

  5. Une société littéraireJava L'impasse et CPU 100% Techniques de dépannage des problèmes

    Être une personne positive Codage.Modifierbug.Améliorer soi - même J'ai un paradis.,Programmation orientée,Les fleurs fleurissent au printemps Le travail est bon.,Il faut d'abord utiliser ses outils. 00 Introduction à cet article En tant que singe technologue ou lion de siège , Vous devriez avoir une idée de ces deux questions , Peut - être que tu ...

  6. 【Optimisation des performances】Une société littéraireJava L'impasse et CPU100% Techniques de dépannage des problèmes

    Lien vers le texte original: 00 Introduction à cet article En tant que singe technologue ou lion de siège , Vous devriez avoir une idée de ces deux questions , Peut - être avez - vous déjà rencontré quelqu'un dans un vrai travail ou un entretien d'embauche : Première question:Java Comment résoudre les blocages ? Deuxième question:Les vêtements ...

  7. JAVA Apprentissage du mécanisme d'écoute des événements

    //Mécanisme d'écoute des événements import java.awt.*; import java.awt.event.*; public class TestEvent { public static void mai ...

  8. vbEtvb.netMécanisme de l'événement

    ApprendrejavaAvant l'événement, Après avoir passé en revue vb6Etvb.netMécanisme d'événement pour, Résumé ici , Pour comparaison . Un événement est un moyen de faire face à la communication entre objets dans un objet . L'incident s'est produit par ( Aussi appelé la source de l'événement ) Quand un événement se produit , En envoyant un message , Au destinataire de l'événement ( Gestionnaire d'événements ...

  9. Compréhension approfondieReact:Principe du mécanisme des événements

    Table des matières Préambule DOMFlux d'événements Phase de capture d'événements.En phase cible.Phase bulle de l'événement addEventListener Méthodes React Aperçu de l'événement Enregistrement des événements document Inscription Fonction de rappel stockée Distribution des événements Résumé RÉFÉRENCES ...

  10. Java Mettre en œuvre le mécanisme des événements

    javaLes participants au mécanisme des événements dans3Rôle des espèces: 1.event object: Objet d'état de l'événement ,Pourlistener Parmi les méthodes correspondantes ,Comme paramètre, La présence générale est liée à listerner Parmi les méthodes 2.event sourc ...

Recommandation aléatoire

  1. CREATE TABLE Nom du tableau AS SELECT Déclarations

    1. La nouvelle table n'a pas de structure de table dupliquée, c'est - à - dire que les données sont transférées à la nouvelle table ? 1 2 create table new_table select * from old_talbe; Cette méthode va old_table Tout est copié ici , ...

  2. [UCSD Question du tableau blanc ] Take as Much Gold as Possible

    Problem Introduction This problem is about implementing an algorithm for the knapsack without repeti ...

  3. javascript Modèle de conception apprentissage 4 ——Mode Singleton, Cache et pool d'objets

    Définition du mode Singleton: Assurez - vous qu'une instance ,Et un accès global. Définition d'un cas unique inerte : Créer des objets seulement si nécessaire . En développement, Certains objets n'ont souvent besoin que d'un seul ,Comme un pool de Threads.Cache global.Dans le NavigateurwindowObjet, etc.. javaSingleton in Coupez. ...

  4. macAllez.SVNGestion de projet, Conseils pour une solution verrouillée

    Questions macAllez.SVNGestion de projet, L'invite est verrouillée .Je ne peux pascommit.Pas du tout.update.Conseils clean the working copy and then. .. Solutions watermark/2/text ...

  5. Développement rapide basé sur HTML5 Applications de topologie de réseau --Niveau débutant chapitre(Un.)

    La topologie des réseaux informatiques est la recherche et la taille en topologie de référence , Points indépendants de la forme . La méthode de la relation linéaire . Résumer les ordinateurs et les équipements de communication du réseau en un seul point , Résumer le support de transmission en une seule ligne , La géométrie des points et des lignes est la topologie du réseau informatique .Topologie du réseau ...

  6. oracle ebs Sécurité des produits appliqués - Ensemble de droits d'accès aux données

    Définition L'ensemble des droits d'accès aux données est important . Options de profil système qui doivent être définies . Pour avoir le même plan comptable . Le grand livre pour le type de calendrier et de période et la définition de toutes les valeurs de segment d'équilibre ou de gestion des permissions de lecture et d'écriture , L'Administrateur du système les assigne à différentes responsabilités pour contrôler les différentes responsabilités par rapport au nombre de grands livres ...

  7. dockerInstallation,Mise à jour, Et supprimer (Dernière édition)

    dockerInstallé àubuntuAllez. Anciennement appelé Docker engine L'installation s'appelle maintenant docker-ceDe Première méthode d'installation : rootExécution inférieure,sudo su - root apt-get update - ...

  8. C#Note13:Comment faireC#Appel moyenpython

    Préface IronPython C'est une sorte de .NET Et MonoOui. Python Réalisation, Par Microsoft Jim Hugunin(En même temps, Jython Créateur) Initié par , C'est un projet Open Source , Basé sur Microsoft DLR ...

  9. LINUXConfiguration du système

    LINUXConfiguration du système Linux InstallationjdkMéthodes; Linux Tomcat Installation et configuration Linux redis Installation et configuration (Exemple1) Linux redisConfiguration de l'installation(Exemple2) NGINX Installation Linu ...

  10. FonctionsisNaN() parseFloat() parseInt() MathObjet

    isNaN() Définitions et utilisation isNaN() La fonction vérifie si ses arguments sont des valeurs non numériques . isNaN(x) x Est une valeur non numérique spéciale NaN( Ou peut être converti en une telle valeur ) console.log(isNaN(NaN)) ...