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->向上移动。很抱歉