是否有一种方法可以使MOUSE_DRAGGED在移动10像素JavaFX之前不会触发

时间:2017-08-29 05:36:40

标签: java javafx javafx-8 mouseevent transparency

标题解释了它。

所以我有一个应用程序,当它没有被过度填充时会衰减为1/2不透明度。此应用程序为StageStyle.TRANSPARENT,当用户拖动鼠标时会移动。

我想知道是否有办法让鼠标在触发拖动事件之前必须拖动一定数量的像素?

这是代码

    moveWindowTemp dragDelta = new moveWindowTemp();
    primaryScene.addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent -> {
        dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX();
        dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY();
    });

    primaryScene.addEventFilter(MouseEvent.MOUSE_DRAGGED, mouseEvent -> {
        primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x);
        primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y);
        isBeingMoved = true;
    });
    primaryScene.addEventFilter(MouseEvent.MOUSE_RELEASED, mouseEvent -> {
        primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x);
        primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y);
        isBeingMoved = false;
    });
...
    public class moveWindowTemp {
        double x, y;
    }

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您只需将事件设置为在事件过滤器中使用即可。 https://docs.oracle.com/javase/8/javafx/events-tutorial/filters.htm#BCFDCCEJ