JavaFX获取鼠标的方向

JavaFX获取鼠标的方向,javafx,gridpane,Javafx,Gridpane,我怎么知道鼠标移动的方向?我需要知道鼠标是否移动到场景的左侧、右侧、底部或顶部 感谢您,您可以在gridpane中添加事件处理程序来记录鼠标移动时的位置。然后将新位置与旧位置进行比较,以确定鼠标移动的方向 int x, y; gridpane.addEventHandler(MouseEvent.MOUSE_MOVED, e ->{ if (e.getX() < x) { // left } else if (e.getX() > x) {

我怎么知道鼠标移动的方向?我需要知道鼠标是否移动到场景的左侧、右侧、底部或顶部


感谢您,您可以在gridpane中添加事件处理程序来记录鼠标移动时的位置。然后将新位置与旧位置进行比较,以确定鼠标移动的方向

int x, y;

gridpane.addEventHandler(MouseEvent.MOUSE_MOVED, e ->{
    if (e.getX() < x) {
        // left
    } else if (e.getX() > x) {
        // right
    } else if (e.getY() < y) {
        // up
    } else if (e.getY() > y) {
        // down
    }
    x = e.getX();
    y = e.getY();
});
intx,y;
gridpane.addEventHandler(MouseEvent.MOUSE_移动,e->{
if(如getX()x){
//对
}else if(如getY()y){
//向下
}
x=e.getX();
y=e.getY();
});

下面是一个示例添加,演示了这个想法。看X的变化,知道鼠标是向左还是向右移动。查看Y的变化,了解鼠标是向上还是向下移动。如果
ChangeInX>0->向右移动
。如果
ChangeInX<0->向左移动
。如果
ChangeInY>0->向下移动
。如果
ChangeInY<0->向上移动

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author blj0011
 */
public class MouseDirectionTest extends Application
{

    double orgX, orgY;

    @Override
    public void start(Stage primaryStage)
    {

        StackPane root = new StackPane();
        root.setOnMouseEntered((event) -> {
            orgX = event.getSceneX();
            orgY = event.getSceneY();
        });
        root.setOnMouseMoved((event) -> {
            double changeInX = event.getSceneX() - orgX;
            double changeInY = event.getSceneY() - orgY;
            //System.out.println(orgX / orgY);

            if (changeInX > 0) {
                System.out.println("moving right");
            }
            else if (changeInX < 0) {
                System.out.println("moving left");
            }
            if (changeInY > 0) {
                System.out.println("moving down");
            }
            else if (changeInY < 0) {
                System.out.println("moving up");
            }

            orgX = event.getSceneX();
            orgY = event.getSceneY();
        });

        Scene scene = new Scene(root, 700, 500);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }

}
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
/**
*
*@author blj0011
*/
公共类MouseDirectionTest扩展了应用程序
{
双重狂欢,狂欢;
@凌驾
公共无效开始(阶段primaryStage)
{
StackPane root=新的StackPane();
root.setonMouseCentered((事件)->{
orgX=event.getSceneX();
orgY=event.getSceneY();
});
root.setOnMouseMoved((事件)->{
double changeInX=event.getSceneX()-orgX;
double changeInY=event.getSceneY()-orgY;
//系统输出打印项次(orgX/orgY);
如果(changeInX>0){
System.out.println(“向右移动”);
}
否则如果(更改X<0){
System.out.println(“向左移动”);
}
如果(变化>0){
System.out.println(“向下移动”);
}
否则如果(变化小于0){
System.out.println(“向上移动”);
}
orgX=event.getSceneX();
orgY=event.getSceneY();
});
场景=新场景(根,700500);
setTitle(“你好,世界!”);
初级阶段。场景(场景);
primaryStage.show();
}
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)
{
发射(args);
}
}

查看X的变化,了解鼠标是向左还是向右移动。查看Y的变化,了解鼠标是向上还是向下移动。如果X的变化为正值,则鼠标向下移动。如果Y的变化是正的,鼠标就向右移动了。我把上面评论的后半部分搞砸了。ChangeInX>0->向右移动。ChangeInX<0->向左移动。更改>0->向下移动。变化<0->向上移动。很抱歉