Как перетащить файлы из моего приложения в другие окна (например, Windows Explorer)? - PullRequest
0 голосов
/ 29 марта 2019

Я пишу приложение, которое может сохранять файлы на сервере. Я хочу, чтобы пользователи могли перетаскивать файлы из моего приложения в другое приложение, такое как рабочий стол или Windows Explorer. Но мне нужно сначала загрузить файлы, когда пользователь закончит перетаскивание и вызовет другое приложение позже. Что мне делать?

Я написал этот код и проверил, могу ли я использовать его для передачи файла.

DragSource dragSource = DragSource.getDefaultDragSource();
dragSource.createDefaultDragGestureRecognizer(fileContentList, DnDConstants.ACTION_COPY, dge -> dge.startDrag(DragSource.DefaultCopyDrop, new Transferable() {
    @Override
    public DataFlavor[] getTransferDataFlavors() {
        return new DataFlavor[]{DataFlavor.javaFileListFlavor};
    }

    @Override
    public boolean isDataFlavorSupported(DataFlavor flavor) {
        return DataFlavor.javaFileListFlavor.equals(flavor);
    }

    @Override
    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
        System.out.println("getTransferData");
        ArrayList<File> list = new ArrayList<>();
        list.add(new File("./data"));
        return list;
    }
}, new DragSourceAdapter() {
    @Override
    public void dragEnter(DragSourceDragEvent dsde) {
        DragSourceContext dragSourceContext = dsde.getDragSourceContext();
        int action = dragSourceContext.getSourceActions();
        if(action == DnDConstants.ACTION_COPY) {
            dragSourceContext.setCursor(DragSource.DefaultCopyDrop);
        } else {
            dragSourceContext.setCursor(DragSource.DefaultCopyNoDrop);
        }
    }

    @Override
    public void dragDropEnd(DragSourceDropEvent dsde) {
        if (dsde.getDropSuccess()) {
            System.out.println("copy");
        }
    }

}));

Я хочу, чтобы мое приложение выглядело как winRar, сначала загрузите (распакуйте), а затем переместите файлы в целевой файл. При загрузке файлов откройте диалоговое окно для отображения прогресса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...