Перетаскивание TreeView не завершено - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь реализовать Drag-and-Drop в TreeView.Я создаю фабрику ячеек и фиксирую соответствующие события.Все в порядке, но перетаскивание не завершает операцию.

Это пример кода теста:

@FXML
protected void initialize() {
    super.initialize();

    treeView.setCellFactory(this::createTreeCell);
}

private TreeCell<Group> createTreeCell(TreeView<Group> tv) {
    TreeCell<Group> cell = new TreeCell<>() {
        @Override
        protected void updateItem(Group group, boolean empty) {
            super.updateItem(group, empty);

            if(empty || group == null) {
                setText("");
            }
            else {
                setText(group.getName());
            }
        }
    };

    cell.setOnDragDetected(mouseEvent -> {
        System.out.println("Drag detected ... ");

        ClipboardContent content = new ClipboardContent();
        content.putString("Test");

        Dragboard dragboard = cell.startDragAndDrop(TransferMode.COPY);
        dragboard.setContent(content);

        mouseEvent.consume();
    });

    cell.setOnDragOver(dragEvent -> {
        if(dragEvent.getDragboard().hasString()) {
            System.out.println("Drag Over ...");
            dragEvent.acceptTransferModes(TransferMode.ANY);
        }

        dragEvent.consume();
    });

    cell.setOnDragDropped(dragEvent -> {
        System.out.println("Drag Dropped ...");

        dragEvent.setDropCompleted(true);
        dragEvent.consume();

        System.out.println("Is Drop completed: " + dragEvent.isDropCompleted());
    });

    cell.setOnDragDone(dragEvent -> {
        System.out.println("Drag Done ...");
        dragEvent.consume();
    });

    return cell;
}

Результат трассировки, которую я получаю:

Drag detected ... 
Drag Over ...
Drag Over ...
.
.
.
Drag Over ...
Drag Over ...
Drag Dropped ...
Is Drop completed: true
Drag Over ...
Drag Over ...
Drag Over ...
Drag Dropped ...
Is Drop completed: true
Drag Over ...
Drag Over ...
Drag Over ...
...