如何解决Javafx拖放到查找器
我试图对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();
});
解决方法
我不确定我是否完全理解您的问题,但是由于您几天都没有收到任何反馈,我还是会尝试一下。
使用ClipboardContent.putFiles()
时,您使用的是:
DataFormat FILES = new DataFormat("application/x-java-file-list","java.file-list");
根据您要放入Object
的{{1}},可以使用另一个ClipboardContent
。鉴于DataFormat
类默认情况下是可序列化的(不确定ArrayList
),您可以这样做:
Node
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。