【发布时间】:2016-09-11 07:02:57
【问题描述】:
Java Oracle 社区问题 (https://community.oracle.com/thread/3934986)
问题:
我已经为Button 设置了下面的代码,它的全名代表文件路径。所以当Button 被拖到文件夹或桌面时(比如说Windows????)它是由用户的操作系统复制。
我想获取已完成放置的目标文件夹。
代码:
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();
}
编辑:(29/09/2016)
当放置完成时:
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());
});
我得到这个输出,你可以看到Gesture Target == null
Drag Done:true , s drop completed?false , is accepted?true
Accepted Mode:COPY
Target:SmartController$TableViewer@112437[styleClass=table-view] Gesture Target:null
【问题讨论】:
-
我遇到了同样的问题...您找到解决方案了吗?
-
@user364044 我也在 Oracle Java 社区上发布了这个问题,但没有答案。 :(
-
@jewelsea 我也在 Oracle Java 社区中提出过这个问题,但要么没有人知道如何回答,要么 JavaFX 没有这样的功能,所以我发表了这条评论,希望你能知道答案或作品周围:)。我需要那个功能。
-
(不确定这是否明显)当拖动开始时触发 setOnDragDetected(拖动目标未知)。检查 setOnDragDone 和 dsetOnDragExited。 (仍然不能保证路径会在那里)
标签: java javafx drag-and-drop