IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

MouseListener et Drag&Drop


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut MouseListener et Drag&Drop
    Bonjour,

    J'ai déjà un événement MouseListener sur mon JTree (menu contextuel) et je désire ajouter du drag & drop. Je suis les recommandations du tutorial en appelant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jTree.setDragEnabled(true);
    jTree.setTransferHandler(new TreePathTransferHandler(jTreeCibles, DnDConstants.ACTION_COPY_OR_MOVE));
    Toutefois, comme j'ai déjà un MouseListener attaché à cet arbre, le transferHandler ne reçois pas l'événement de la souris pour le DragGestureEvent. Toutefois, si je commente ou j'enlève le MouseListener existant (pour le menu contextuel), le DnD fonctionne normalement.

    Quelqu'un a-t-il une idée pourquoi l'événement ne se rend pas au DragGestureListener quand on a déjà un MouseListener?


    Quand ça marche, voici la pile des appels (call stack) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    TreePathTransferHandler.createTransferable(JComponent) line: 71
    TransferHandler$DragHandler.dragGestureRecognized(DragGestureEvent) line: not available
    TransferHandler$SwingDragGestureRecognizer(DragGestureRecognizer).fireDragGestureRecognized(int, Point) line: not available
    TransferHandler$SwingDragGestureRecognizer.gestured(JComponent, MouseEvent, int, int) line: not available
    TreePathTransferHandler(TransferHandler).exportAsDrag(JComponent, InputEvent, int) line: not available
    TreePathTransferHandler.exportAsDrag(JComponent, InputEvent, int) line: 86
    BasicTreeUI$TreeDragGestureRecognizer(BasicDragGestureRecognizer).mouseDragged(MouseEvent) line: not available
    AWTEventMulticaster.mouseDragged(MouseEvent) line: not available
    JTree(Component).processMouseMotionEvent(MouseEvent) line: not available
    JTree(JComponent).processMouseMotionEvent(MouseEvent) line: not available
    JTree(Component).processEvent(AWTEvent) line: not available
    JTree(Container).processEvent(AWTEvent) line: not available
    JTree(Component).dispatchEventImpl(AWTEvent) line: not available
    JTree(Container).dispatchEventImpl(AWTEvent) line: not available
    JTree(Component).dispatchEvent(AWTEvent) line: not available
    LightweightDispatcher.retargetMouseEvent(Component, int, MouseEvent) line: not available
    LightweightDispatcher.processMouseEvent(MouseEvent) line: not available
    LightweightDispatcher.dispatchEvent(AWTEvent) line: not available
    CiblesMenusFrame(Container).dispatchEventImpl(AWTEvent) line: not available
    CiblesMenusFrame(Window).dispatchEventImpl(AWTEvent) line: not available
    CiblesMenusFrame(Component).dispatchEvent(AWTEvent) line: not available
    EventQueue.dispatchEvent(AWTEvent) line: not available
    EventDispatchThread.pumpOneEventForHierarchy(int, Component) line: not available
    EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: not available
    EventDispatchThread.pumpEvents(int, Conditional) line: not available
    EventDispatchThread.pumpEvents(Conditional) line: not available
    EventDispatchThread.run() line: not available

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Finalement, ça fonctionne.

    Malheureusement, quand on clique une cellule de l'arbre pour faire un drag & drop, la cellule n'est pas sélectionnée immédiatement, il faut attendre une seconde ou encore cliquer une deuxième fois. C'est ce qui m'a induit en erreur et m'a fait croire qu'il y avait un problème d'événement non relayé.

    Je suggère le lien suivant pour tout ceux qui voudraient essayer le DnD :

    http://www.iut.univ-paris8.fr/~rosmo...e/dragAndDrop/

    Lisez aussi le tutorial de Sun.

    http://java.sun.com/docs/books/tutor.../misc/dnd.html

    Tout peut se faire avec la classe TransferHandler. Évitez les anciens tutoriaux qui utilisent directement les DragSource*, DropTarget* et DragGesture*. Vous vous compliquerez la vie pour rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. Drag and Drop et MouseListener
    Par snay13 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 08/10/2010, 12h46
  3. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  4. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo