当节点拉伸到适合父级大小时,JavaFx节点快照将按比例缩小

时间:2017-06-20 18:26:17

标签: java javafx drag-and-drop javafx-8

我已经实现了一个显示问题的小例子。 我有一个适合其父级宽度的节点。当我开始拖拽时在该节点上放置手势,我创建了节点的快照,并将其设置为拖动视图的图像。

@Override
public void start(Stage stage) throws Exception {
    HBox root = new HBox(10);

    Label someText = new Label("some text");
    someText.prefWidthProperty().bind(root.widthProperty());
    someText.setPrefHeight(50);
    root.getChildren().add(someText);

    root.setOnDragDetected(event -> {
        Dragboard db = root.startDragAndDrop(TransferMode.MOVE);

        ClipboardContent content = new ClipboardContent();
        content.put(DataFormat.PLAIN_TEXT, "test");
        db.setContent(content);

        WritableImage image = root.snapshot(null, null);
        db.setDragView(image);

        event.consume();
    });

    Scene scene = new Scene(root);
    root.prefWidthProperty().bind(scene.widthProperty());

    stage.setTitle("JavaFX snapshot example");
    stage.setScene(scene);
    stage.show();
}

当我轻轻地增加场景的大小(用鼠标)时,我开始拖动&拖放手势,拖动视图图像具有相同的节点大小。但是,如果我继续增加场景的大小,我就开始拖拽&放下手势,在某些时候拖动视图图像变小。如果我最大化场景以适应屏幕尺寸,则拖动视图图像很小。

问题是为什么。这是一个错误吗?可以采取哪些措施来解决或解决此问题?

请注意,当我添加一些痕迹时,我可以看到image.getWidth()与root.getWidth()相同,这对我来说显然很奇怪。

编辑:转载于Java 8 + macOS 10.12.5,Retina屏幕

编辑2:未在Java 8 + Windows 10平台上重​​现。

因此,它可能是MacOS平台上的错误,也可能是某些限制,例如拖动视图图像可能具有的最大尺寸。

当然欢迎任何有关根本原因的信息。

0 个答案:

没有答案