2015-06-18 97 views
0

我有一個JavaFX應用程序拖放拖放電子郵件功能,它工作正常,如果你從Windows資源管理器選項卡拖動文件到應用程序。JavaFX - DnD - 第三方程序到JavaFX應用程序

但是,如果您嘗試將Outlook中的電子郵件文件拖入我的應用程序,dragBoard hasFiles方法爲false,則會執行OnDragDropped處理程序。

即時通訊使用TransferMode.ANY和我說的,如果你拖動電子郵件,甚至txt文件使用Windows資源管理器它將工作。

如果你想從另一個應用程序拖動是否有任何技巧或限制?

感謝

回答

0

首先,看看有什麼在DragBoard:

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

你得到這樣的輸出:
[文/ X-MOZ-URL] - 我
[應用程序/ x -moz-file-promise] - null
[text/x-moz-message] - i
[application/x-moz-file-promise-url] - java.nio.HeapByteBuffer [pos = 0 lim = 200帽= 200]
[_NETSCAPE_URL] - java.nio.HeapByteBuffer [POS = 0 LIM = 63帽= 63]
(在這個例子中我拖着從FossaMail郵件)

這告訴你的MIME類型(應用/ X- moz-file-promise-url)和類(HeapByteBuffer):

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