JavaFX-DnD-JavaFX应用程序的第三方程序

JavaFX-DnD-JavaFX应用程序的第三方程序,javafx,drag-and-drop,javafx-8,Javafx,Drag And Drop,Javafx 8,我有一个JavaFX应用程序拖放电子邮件功能,如果您将文件从windows资源管理器选项卡拖动到该应用程序中,该功能可以正常工作 但是,如果您试图将电子邮件文件从outlook拖到我的应用程序中,则dragBoard hasFiles方法为false,将执行OnDragDrop处理程序,tho 我使用TransferMode.ANY和我说过的,如果你用Windows资源管理器拖动电子邮件,甚至是txt文件,它就会工作 如果你想从另一个应用程序中拖动,有什么技巧或限制吗 谢谢首先,看看拖板上有什么

我有一个JavaFX应用程序拖放电子邮件功能,如果您将文件从windows资源管理器选项卡拖动到该应用程序中,该功能可以正常工作

但是,如果您试图将电子邮件文件从outlook拖到我的应用程序中,则dragBoard hasFiles方法为false,将执行OnDragDrop处理程序,tho

我使用TransferMode.ANY和我说过的,如果你用Windows资源管理器拖动电子邮件,甚至是txt文件,它就会工作

如果你想从另一个应用程序中拖动,有什么技巧或限制吗


谢谢

首先,看看拖板上有什么:

Dragboard db = event.getDragboard();
db.getContentTypes().forEach(df -> System.out.println(df + " - " + db.getContent(df)));
您会得到如下输出:
[text/x-moz-url]-i
[应用程序/x-moz-file-promise]-null
[text/x-moz-message]-i
[application/x-moz-file-promise-url]-java.nio.HeapByteBuffer[pos=0 lim=200 cap=200]
[\u NETSCAPE\u URL]-java.nio.HeapByteBuffer[pos=0 lim=63 cap=63]
(在本例中,我从FossaMail中拖出一封邮件)

这将告诉您mime类型(application/x-moz-file-promise-url)和类(HeapByteBuffer):

DataFormat df = DataFormat.lookupMimeType("application/x-moz-file-promise-url");
ByteBuffer buffer = (ByteBuffer) db.getContent(df);