Javafx 为什么我的图像总是在我的主播机上以拖放方式重新定位?
你可以看到这种行为。我试过几种不同的技巧,但似乎都不对劲。图像将在第一次完全拖放。之后,它将在再次拖动之前在原点重新定位Javafx 为什么我的图像总是在我的主播机上以拖放方式重新定位?,javafx,drag-and-drop,Javafx,Drag And Drop,你可以看到这种行为。我试过几种不同的技巧,但似乎都不对劲。图像将在第一次完全拖放。之后,它将在再次拖动之前在原点重新定位 @FXML private ImageView imageId; @FXML private AnchorPane imagePane; private double startX; private double startY; @FXML private void loadImage(){ double width = imagePane.getWidth()
@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();
});