是否可以在ClipboardContent javaFx上存储节点

时间:2016-05-07 21:25:54

标签: java javafx javafx-2

我实现了将一个组拖放到一个窗格中,在clipBoard中放入一个空字符串。 ,这很有效,但拖动时我需要看到我的物体。

我在一些例子中看到过使用了DataFormat,并且该对象应该是可序列化的,我不确定它是否可以适用于我的情况。 我尝试使用此方法但是我遇到了异常。事实上,JavaFX不支持使用Java Serializable接口对组件进行序列化。

我正在使用:JavaSE1.7,JavaFX2.2

1 个答案:

答案 0 :(得分: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;
}