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

标签 java javafx javafx-2

我实现了将一个组拖放到一个 Pane 中,在剪贴板中放置一个空字符串。 ,这工作得很好,但我需要拖动时我的对象可见。

我在一些示例中看到使用了 DataFormat 并且该对象应该是可序列化的,我不确定它是否适合我的情况。 我尝试使用此方法,但出现异常。事实上,JavaFX 不支持使用 Java Serialized 接口(interface)对组件进行序列化。

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

最佳答案

您可以创建您正在拖动的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;
}

关于java - 是否可以在 ClipboardContent javaFx 上存储节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093884/

相关文章:

java - Hibernate 使用 java ArrayList

java - 使用鼠标在网格 Pane 中添加节点

java - 如何以编程方式打开新的浏览器窗口

java - JavaFX 稍后运行不起作用

java - 如何从多个嵌套 FXML 获取数据并调用其 Controller 上的方法

java - 小程序中的主要方法替代

java - 如何使用 VisualVM 测量 Storm 拓扑中的内存泄漏?

java - 如何用canvas预览当前绘制的对象?

memory-leaks - 具有动态 TableColumns 的 TableView 中的 JavaFX 内存泄漏

java - 无法将 JsonNull 转换为 JsonObject