2016-05-07 2 views
0

Я осуществил перетаскивание группы на панель, положив пустую строку в clipBoard. , это работает отлично, но мне нужно, чтобы мой объект был виден при перетаскивании.Возможно ли сохранить узел на ClipboardContent javaFx

Я видел в некоторых примерах, что DataFormat используется и что объект должен быть сериализуемым, ну, я не уверен, что он может работать для моего дела. Я попытался использовать этот метод, но получил исключение. Фактически, JavaFX не поддерживает сериализацию компонентов с использованием интерфейса Java Serializable.

Я использую: JavaSE1.7, JavaFX2.2

+0

Почему вы используете версию который давно не пользуется общественной поддержкой? –

+0

Мы работаем над набором проектов. По некоторым причинам мы не можем обновиться прямо сейчас. – cltr

ответ

1

Вы можете создать образ Node перетаскивания и использовать его для dragView:

private EventHandler<? super MouseEvent> onDragDetected() { 
    return evt -> { 
     Node node = (Node) evt.getSource(); 
     Dragboard db = node.startDragAndDrop(TransferMode.MOVE); 
     db.setDragView(createSnapshot(node), evt.getX(), evt.getY()); 

     ClipboardContent content = new ClipboardContent(); 
     content.putString(""); 
     db.setContent(content); 

     evt.consume(); 
    }; 
} 

private WritableImage createSnapshot(Node node) { 
    SnapshotParameters snapshotParams = new SnapshotParameters(); 
    WritableImage image = node.snapshot(snapshotParams, null); 
    return image; 
} 
+0

Кажется, что метод setDragView с тех пор, как JavaFX 8.0 – cltr

+0

Да, я этого не заметил. – jns

+0

Посмотрите на этот вопрос: http://stackoverflow.com/questions/13624491/implement-drag-and-drop-like-in-scene-builder – jns