[javafx] drag and drop treeview [Fermé]

Messages postés
32
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
17 avril 2013
- - Dernière réponse : cptpingu
Messages postés
3798
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
13 novembre 2019
- 17 avril 2013 à 13:42
salut à tous,

exemple déplacer "b1" vers
les enfants de "a" dans un treeview
-a
--a1
--a2
-b
--b1
--b2  

tree.setOnDragDetected...
tree.setOnDragOver...
tree.setOnDragDropped ( new EventHandler<DragEvent>() {
 @Override public void handle(DragEvent event) {
  Dragboard db=event.getDragboard();
   boolean success=false;
   if ( event.getDragboard().hasString() ) {  
System.out.println("déplacer "+db.getString());
    success=true;
   }
   event.setDropCompleted(success);
   event.consume();
  }
 }
);

je retrouve bien b1 ( db.getString() ),
mais comment savoir que le curseur ou "dropper"
pointe sur a ou a1, a2 ... ?

merci d'avance.
Afficher la suite 

9 réponses

0
Merci
Bonjour

C'est expliqué ici dans la rubrique "Handling a DRAG_DONE Event on a Source" dans l'exemple n°7.























T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
32
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
17 avril 2013
0
Merci
merci de votre réponse, mais euh ?
vous parlez de cela ? :
Example 7
source.setOnDragDone(new EventHandler<DragEvent>() {
    public void handle(DragEvent event) {
        if (event.getTransferMode() == TransferMode.MOVE) {
            source.setText("");
        }
        event.consume();
    }
});

j'avoue ne pas comprendre
Commenter la réponse de cs_quicest
Messages postés
32
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
17 avril 2013
0
Merci
enfin... j'ai compris que c'est
dans OnDragDone qu'on peut faire
le drop, ma question c'est "vers où" ?
comment retrouver le noeud pointé ?
merci encore.
Commenter la réponse de cs_quicest
Commenter la réponse de Utilisateur anonyme
Messages postés
32
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
17 avril 2013
0
Merci
bon, ben navré,
toujours pas compris comment faire...
tree.setOnDragDetected
(  new EventHandler<MouseEvent>()
 {  @Override public void handle(MouseEvent event)
  {  String selected=tree.getSelectionModel().getSelectedItem().getValue();
   if ( selected !=null )
   {  if ( tree.getSelectionModel().getSelectedItem().getParent()!=
      tree.getRoot() )
    {  db=tree.startDragAndDrop(TransferMode.MOVE);
     ClipboardContent content=new ClipboardContent();
     content.putString(selected);
     db.setContent(content);
     event.consume();
    }
   }
  }
 }
);
tree.setOnDragOver
(  new EventHandler<DragEvent>()
 {  @Override public void handle(DragEvent event)
  {  db=event.getDragboard();
   if ( event.getDragboard().hasString() )
   {  event.acceptTransferModes(TransferMode.MOVE);
   }
   event.consume();
  }
 }
);
tree.setOnDragDropped
(  new EventHandler<DragEvent>()
 {  @Override public void handle(DragEvent event)
  {  db=event.getDragboard();
   boolean success=false;
   if ( event.getDragboard().hasString() )
   {  success=true;
   }
   event.setDropCompleted(success);
   event.consume();
  }
 }
);
tree.setOnDragDone
(  new EventHandler<DragEvent>()
 {  @Override public void handle(DragEvent event)
  {  if ( event.getTransferMode()==TransferMode.MOVE )
   {
/* ====================
 bon, ici, db.getString() c'est l'émetteur, 
 la source
 et le récepteur ? la destination ? c'est quoi ? 
================== */
   }
   event.consume();
  }
 }
);

merci de votre patience.
Commenter la réponse de cs_quicest
0
Merci
Essayez de traiter l'objet retourné par event.getGestureTarget() dans tree.setOnDragDone(). db.getString() ne contient pas l'émetteur, c'est plutôt le contenu textuel du tampon utilisé pendant le drag and drop. Lisez bien la documentation avant de faire des suppositions sur ce que les méthodes font.


























T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
32
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
17 avril 2013
0
Merci
laissez tomber...
réponse et exemple nickel sur autre site
il faut appliquer cela sur le treeceel
pas sur le treeview
>>Lisez bien la documentation
c'est ce que j'ai fait, ne comprenant
pas tout, je demandais une aide pas de
vains "conseils".
Commenter la réponse de cs_quicest
0
Merci
On vous a répondu ici. JavaFX permet de résoudre votre problème de plusieurs façons, tant mieux que quelqu'un d'autre vous ait proposé une solution fonctionnelle. DragEvent.getGestureTarget() aurait pu vous permettre de récupérer le TreeCell depuis la bonne callback, encore faut-il mettre l'écouteur sur le bon composant et être capable de faire un malheureux cast.

je demandais une aide pas de
vains "conseils"

Si c'est comme ça que vous vous adressez à moi, je ne vous répondrai plus (et je ne serai sûrement pas le seul). Je suis bénévole, j'essaie d'aider les gens du mieux que je peux. Plus de 90% des questions posées ici trouvent leurs réponses dans la documentation officielle de l'API Java standard, dans des exemples postés ici ou ailleurs sur Internet. Le ton que vous prenez me paraît inapproprié. Internet n'est pas le far west et n'espérez pas de coups de main de personnes que vous traitez avec mépris. Vous avez posté votre question sur au moins 3 sites (ici aussi), je ne vois pas de quoi vous êtes fier, vous auriez pu poster de votre propre gré un lien vers la solution qui vous a semblé la plus adéquate ne serait-ce que pour aider les autres membres qui rencontreront le même problème que vous. Cordialement.

























T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
3798
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
13 novembre 2019
90
0
Merci
@quicest: C'est particulièrement impoli de ta part. gouessej a essayé de t'aider, tu as fait peu d'efforts, et lorsque quelqu'un te donne la réponse toute cuite sur un autre forum, tu te permet d'être méprisant envers un bénévol.
La personne qui t'a donné la réponse pré-machée ne t'a pas vraiment aidé, car tu ne sais toujours pas chercher, juste demander du préfait sans compréhension véritable, ni autonomie.
Peu importe tes raisons, c'est un comportement déplorable, et un réel manque de respect.

Sujet clos + avertissement pour quicest.

________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu