JavaFX获得鼠标的方向

时间:2018-02-23 14:43:15

标签: javafx gridpane

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

由于

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

这是一个示例添加,演示了这个想法。查看X中的更改以了解鼠标是向左还是向右移动。查看Y中的更改,以了解鼠标是向上还是向下移动。如果ChangeInX > 0 -> moving right。如果ChangeInX < 0 -> moving left。如果ChangeInY > 0 -> moving down。如果ChangeInY < 0 -> moving up

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

}