Question

Je viens d'apprendre (à la dure) que les Composants de Java ne peuvent contenir qu'un seul DropTarget . Pas de panique, j'ai dit, je vais juste ajouter un autre DropTargetListener à ce DropTarget - seulement pour découvrir que les DropTarget ne peuvent avoir qu'un seul < code> DropTargetListener !

J'ai deux DropTargetListener qui écoutent des événements très différents (l'un gère les éléments glissés et déposés dans le composant, l'autre traite les éléments extérieurs au composant). Dois-je les combiner dans un DropTargetListener géant, ou existe-t-il un moyen élégant de les séparer?

Était-ce utile?

La solution

DropTarget est une source de monodiffusion, vous pouvez donc y ajouter au plus un DropTargetListener . Je crois que ce devrait être un objet simple qui examine la source (dedans / dehors) de la chose abandonnée et appelle l'un de vos DropTargetListener en fonction du résultat.

Modifier: si vous êtes résolument décidé à créer un "universel" vous pouvez alors essayer de créer un événement wrapper qui transmet les appels de méthode à l’événement d’origine, mais intercepte REFDORY () , acceptDrop () (et peut-être d’autres méthodes problème), puis passez l'emballage à vos auditeurs, jusqu'à ce que l'un d'eux l'accepte. Cela suppose que les auditeurs reconnaissent "bon" événements et agir en conséquence.

Autres conseils

Si vous ne trouvez pas de solution satisfaisante, vous pouvez utiliser le Modèle composite pour créez un DropTargetListener contenant une liste d'enfants DropTargetListener . Chaque fois qu’une de ses méthodes est appelée, elle itérera sur sa liste d’écouteurs et invoquera la même méthode. Cela vous permettrait de remettre un seul DropTargetListener au Composant tout en ayant plusieurs DropTargetListener appelés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top