为什么我的图像在拖放时会在我的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);
});
}
答案
您的计算中不包括初始translateX
和translateY
。这样小的移动会将转换重置为接近0的值。包括计算中的初始值应解决此问题:
imageId.setOnMousePressed(e -> {
startX = e.getSceneX() - imageId.getTranslateX();
startY = e.getSceneY() - imageId.getTranslateY();
});
以上是关于为什么我的图像在拖放时会在我的AnchorPane中重新定位?的主要内容,如果未能解决你的问题,请参考以下文章