【问题标题】:JavaFX - DnD - Third-Party Program to JavaFX AppJavaFX - DnD - JavaFX 应用程序的第三方程序
【发布时间】:2015-06-19 06:24:31
【问题描述】:

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

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

我使用的是 TransferMode.ANY,正如我所说,如果您使用 Windows 资源管理器拖动电子邮件,甚至是 txt 文件,它将起作用。

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

谢谢

【问题讨论】:

    标签: javafx drag-and-drop javafx-8


    【解决方案1】:

    首先,看看 DragBoard 中有什么:

    Dragboard db = event.getDragboard();
    db.getContentTypes().forEach(df -> System.out.println(df + " - " + db.getContent(df)));
    

    你会得到这样的输出:
    [文本/x-moz-url] - 我
    [应用程序/x-moz-file-promise] - null
    [文本/x-moz-消息] - 我
    [应用程序/x-moz-file-promise-url] - java.nio.HeapByteBuffer[pos=0 lim=200 cap=200]
    [_NETSCAPE_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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 2020-04-30
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多