【发布时间】:2020-08-21 15:31:24
【问题描述】:
我尝试在 Finder/Windows 资源管理器中实现拖放功能。每当我在拖动板上使用多个文件调用我的函数时,java 就会崩溃,因为 OSX 向我显示了一个异常,即源的数量和目标的数量不一样。在 javafx 中,您不能在节点列表上开始拖放,只能在一个节点上。
我如何归档这个我可以将节点列表拖放到 Finder 而不会崩溃? 换句话说,如何在源不是节点的情况下创建一个拖动板,而不是源是节点列表?
这是我的实际代码:
imageGrid.setOnDragDetected((t) -> {
/* drag was detected, start a drag-and-drop gesture*/
Dragboard db = imageGrid.startDragAndDrop(TransferMode.ANY);
final ClipboardContent content = new ClipboardContent();
List<File> fileList = new ArrayList<>();
Set<Node> selection = factory.getSelectionModel().getSelection();
selection.forEach((k) -> {
fileList.add(new File(((MediaGridCell) k).getItem().getName()));
});
content.putFiles(fileList);
db.setContent(content);
t.consume();
});
【问题讨论】:
标签: javafx drag-and-drop