javafx - когда я перетаскиваю свою сцену слишком быстро, "якорь" мыши изменяется на сцене, и перетаскивание происходит неправильно
Я создал недекорированную сцену и хочу перемещать ее по экрану, щелкая по сцене и перетаскивая ее.
Мой контроллер обрабатывает два события: mousePressendHandler и mouseDraggedHandler.
Первое событие вызывается, когда пользователь щелкает мышью по сцене. В этом методе я храню координаты родственников на стадии указателя мыши.
Второе событие вызывается, когда пользователь перемещает мышь, не отпуская кнопку. Затем я перемещаю сцену, вычитая координаты указателя мыши на экране и устанавливая результат на сцену.
Примеры:
@FXML
public void mousePressedHandler(MouseEvent me) {
dragAnchorX = me.getScreenX() - stage.getX();
dragAnchorY = me.getScreenY() - stage.getY();
}
@FXML
public void mouseDraggedHandler(MouseEvent me) {
double stageX = me.getScreenX() - dragAnchorX;
double stageY = me.getScreenY() - dragAnchorY;
stage.setX(stageX);
stage.setY(stageY);
}
Я хочу, чтобы сцена не выходила за пределы экрана, поэтому я изменил второй метод:
@FXML
public void mouseDraggedHandler(MouseEvent me) {
double stageX = me.getScreenX() - dragAnchorX;
if (stageX > 0) {
stage.setX(stageX);
}
double stageY = me.getScreenY() - dragAnchorY;
if (stageY > 0) {
stage.setY(stageY);
}
}
Но если я перемещаю мышь слишком быстро, указатель мыши перемещается в сцене, и поэтому результат будет неправильным.
где я не прав?