2010-11-27 4 views
3

J'ai une disposition de la grille avec des nœuds d'image et je veux ajouter à mon application la fonctionnalité dnd, par exemple lorsque je fais glisser un nœud image vers une cible JPanel faire quelques actions par exemple montrer dans la taille originale, supprimer etc. Je l'ai réalisé avec des moyens un avec transferhandler et un avec les DropTargets, DragSource etc.Mais j'ai deux questions et je veux les discuter avec vous.Java Glisser et déposer une image et afficher la vignette de l'image tout en faisant glisser

a) Lequel des deux façons il est préférable d'utiliser? Je comprends que la deuxième façon me donne plus de fonctionnalités que le TransferHandler et le premier est le plus simple à utiliser. Mais je peux faire mon travail de ces deux façons, il y en a deux de plus efficaces, ou c'est tout ce que je préfère coder.

b) Pendant le glissement, je veux afficher une image près du curseur. La première chose que je fais est d'utiliser le glassPane du JFrame et de créer un JCompoment qui peint l'image correcte et suit le curseur. Puis-je le faire de cette façon? Après cela, je vois dans la documentation que la méthode startDrag de la DragSource obtient un argument dragImage, est-ce pour la raison que je veux, j'essaie de passer une Image mais je ne vois aucun résultat.

MISE À JOUR -------------- ---------------------

Pour la deuxième question (b J'ai essayé avec le glasspane mais j'ai un problème dans l'interfonctionnement entre java DND et mes auditeurs pour afficher le pouce d'image dans le glasspane. chaque fois seulement un d'entre eux fonctionne correctement.

!!! Plus précisément, l'événement mouseDragged n'est pas déclenché lorsque j'ai déjà appelé la méthode startDrag()

Nous vous remercions de votre temps.

Répondre

0

Résolu

Enfin, je trouve moi-même solution. Si quelqu'un a le même problème, je dis que le point est que, après que la méthode startDrag() a déclenché tous les événements mouseDraged vont à dragMouseMoved() (de DragSourceMotionListener) et je fais l'erreur d'utiliser aussi le "void mouseDragged (MouseEvent e) "à partir du MouseMotionListener.