我怎么知道鼠标移动的方向?我需要知道鼠标是否移动到场景的左侧,右侧,底部或顶部。
由于
答案 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);
}
}