2015-06-18 6 views
0

У меня есть приложение JavaFX, перетаскивающее функцию n drop email, которая отлично работает, если вы перетащите файл со вкладки проводника Windows в приложение.JavaFX - DnD - сторонняя программа для приложения JavaFX

Однако, если вы попытаетесь перетащить файл электронной почты из своего Outlook в мое приложение, метод dragBoard hasFiles будет ложным, обработчик OnDragDropped будет выполнен, tho.

Im, используя TransferMode.ANY и я, как сказано, если вы перетаскиваете электронную почту или даже файлы txt с помощью проводника Windows, он будет работать.

Есть ли уловка или ограничение, если вы хотите перетащить из другого приложения?

Благодаря

ответ

0

Во-первых, обратите внимание, что это в DragBoard:

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

Вы получаете выход, как это:
[текст/х-Мос-URL] - я
[применение/х -moz-file-prom] - null
[текст/x-moz-message] - i
[application/x-moz-file-prom-url] - java.nio.HeapByteBuffer [pos = 0 lim = 200 колпачок = 200]
[_NETSCAPE_URL] - java.nio.HeapByteBuffer [поз = 0 Нт = 63 Колпачок = 63]
(В этом примере я перетащил почту от FossaMail)

Это говорит вам мим-типа (приложение/x- moz-file-prom-url) и класс (HeapByteBuffer):

DataFormat df = DataFormat.lookupMimeType("application/x-moz-file-promise-url"); 
ByteBuffer buffer = (ByteBuffer) db.getContent(df); 
Смежные вопросы