2016-05-15 17 views
20

domanda su Java Oracle Community (https://community.oracle.com/thread/3934986)JavaFX ottenere il drag cartella di destinazione di rilascio && dopo goccia è stato fatto

Il problema:

ho impostato il codice qui sotto per una Button che è pieno nome rappresenta un percorso file.Così quando lo Button viene trascinato in una cartella o in un desktop (diciamo in Windows) viene copiato dal sistema operativo dell'utente.

Desidero ottenere la cartella di destinazione su cui è stato eseguito il rilascio.

Codice:

button.setOnDragDetected(event -> { 

     /* allow copy transfer mode */ 
     Dragboard db = startDragAndDrop(TransferMode.COPY,TransferMode.LINK); 

     /* put a string on dragboard */ 
     ClipboardContent content = new ClipboardContent(); 

     /*Adding a file into the ClipboardContent*/ 
     content.putFiles(Arrays.asList(new File(getSongPath()))); 

     ........//not showing this code.... 

     db.setContent(content); 

     event.consume(); 

    } 

Edit: (29/09/2016)

quando la caduta è fatto:

setOnDragDone(d -> { 
       System.out.println(
         "Drag Done,is drop completed?" + d.isDropCompleted() + " , is accepted?" + d.isAccepted()); 
       System.out.println("Accepted Mode:" + d.getAcceptedTransferMode()); 
       System.out.println(" Target:" + d.getTarget() + " Gestoure Target:" + d.getGestureTarget()); 
      }); 

ottengo questo output in cui si può vedere che il Gesture Target == null

Drag Done:true , s drop completed?false , is accepted?true 
Accepted Mode:COPY 
Target:[email protected][styleClass=table-view] Gesture Target:null 
+1

Hava un'occhiata a questa domanda: http://stackoverflow.com/questions/25488319/how-to-update-progress-of-the-progress- bar-to-show-the-progress-of-copying-a-fil – jns

+0

Mi sono bloccato allo stesso problema ... Hai trovato qualche soluzione? – Harald

+1

@ user364044 Ho anche postato questa domanda su Oracle Java Community e nessuna risposta. :( – GOXR3PLUS

risposta

4

ho fatto qualche ricerca ed è probabilmente non possibile. Per esempio questa discussione: Get file path for drag-n-drop file on Windows Explorer

Puoi provare questa soluzione:

  • nel setOnDragDetected() fare una copia del file che si desidera eliminare e mettere questo percorso del file copiato nel contenuto. putFile
  • cambia TransferMode.COPY in TransferMode.MOVE
  • inizia a monitorare il file copiato per rilevare dove è stato spostato - ora questa è la parte difficile. Alcune di queste librerie possono aiutare: Java: File Renaming Detection

Questa è solo un'idea per soluzione (non ho completamente prova, ma la pena di verificare)

EDIT 1: pena di leggere. Come rilevamento cartella può essere eseguita su Windows:

http://www.codeproject.com/Articles/23207/Drag-and-Drop-to-Windows-Folder-C