为什么我的图像在拖放时会在我的AnchorPane中重新定位?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的图像在拖放时会在我的AnchorPane中重新定位?相关的知识,希望对你有一定的参考价值。

你可以看到行为here。我尝试了一些不同的技术,但我似乎无法做到正确。第一次图像将完美拖放。之后,它会在再次拖动之前重新定位到原点。

@FXML
private ImageView imageId;

@FXML
private AnchorPane imagePane;

private double startX;
private double startY;

@FXML
private void loadImage(){
    double width = imagePane.getWidth();
    double height = imagePane.getHeight();
    Image image = new Image("main/buttercup2.jpg");
    imageId.setImage(image);
    imageId.setX(width/10);
    imageId.setY(height/10);
}

@FXML
private void closeImage(){
    imageId.setImage(null);
}


// ****below is the part where I am having trouble****

@FXML
private void initialize(){
    imageId.setOnMousePressed(e -> {
        startX = e.getSceneX();
        startY = e.getSceneY();
    });

    imageId.setOnMouseDragged(e -> {
        imageId.setTranslateX(e.getSceneX() - startX);
        imageId.setTranslateY(e.getSceneY() - startY);
    });
}
答案

您的计算中不包括初始translateXtranslateY。这样小的移动会将转换重置为接近0的值。包括计算中的初始值应解决此问题:

imageId.setOnMousePressed(e -> {
    startX = e.getSceneX() - imageId.getTranslateX();
    startY = e.getSceneY() - imageId.getTranslateY();
});

以上是关于为什么我的图像在拖放时会在我的AnchorPane中重新定位?的主要内容,如果未能解决你的问题,请参考以下文章

android在拖放时滚动

如何在拖放时克隆 div 而不是在拖动开始时克隆

Jquery ui div在拖放时不可拖动

如何阻止 QTreeWidget 在拖放时创建重复项

C#在拖放时在ListView中实现自动滚动

C#在拖放时实现ListView中的自动滚动