2016-05-15 13 views
20

Câu hỏi về Java Oracle Cộng đồng (https://community.oracle.com/thread/3934986)JavaFX được kéo && thư mục thả mục tiêu sau khi thả đã được thực hiện

Vấn đề:

Tôi đã đặt mã dưới đây để biết một Button mà nó đầy đủ tên đại diện cho một đường dẫn tập tin. Do đó khi Button được kéo đến một thư mục hoặc máy tính để bàn (giả sử trong Windows), nó được sao chép bởi Hệ điều hành của người dùng.

Tôi muốn nhận thư mục đích mà thao tác thả đã được thực hiện.

Code:

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)

Khi thả được thực hiện:

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()); 
      }); 

tôi nhận được kết quả này, nơi bạn có thể thấy rằng 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 nhìn vào câu hỏi này: http://stackoverflow.com/questions/25488319/how-to-update-progress-of-the-progress- bar-to-show-the-progress-of-copy-a-fil – jns

+0

Tôi bị kẹt ở cùng một vấn đề ... Bạn có tìm thấy giải pháp nào không? – Harald

+1

@ user364044 Tôi cũng đã đăng câu hỏi này trên Cộng đồng Java Java và không có câu trả lời. :( – GOXR3PLUS

Trả lời

4

tôi đã làm một số nghiên cứu và nó là lẽ không thể. Ví dụ chủ đề này: Get file path for drag-n-drop file on Windows Explorer

Bạn có thể thử cách này:

  • trong setOnDragDetected() tạo ra một bản sao của tập tin bạn muốn thả và đưa đường dẫn tập tin sao chép này trong nội dung. putFile
  • thay đổi TransferMode.COPY thành TransferMode.MOVE
  • bắt đầu theo dõi tệp được sao chép để phát hiện nơi nó được di chuyển - bây giờ đây là phần khó khăn. Một số các thư viện có thể giúp: Java: File Renaming Detection

Đây chỉ là một ý tưởng cho cách giải quyết (tôi đã không kiểm tra đầy đủ về nó nhưng giá trị kiểm tra)

EDIT 1: Worth đọc. Làm thế nào phát hiện thư mục có thể được thực hiện trên Windows:

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

Các vấn đề liên quan