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);
    }
}

Но если я перемещаю мышь слишком быстро, указатель мыши перемещается в сцене, и поэтому результат будет неправильным.

где я не прав?

0 ответов

Другие вопросы по тегам