JavaFX2设置/获取光标位置

JavaFX2设置/获取光标位置,java,cursor,position,mouse,javafx-2,Java,Cursor,Position,Mouse,Javafx 2,如何在JavaFX2中设置/获取光标的位置?我努力用谷歌搜索答案,但没有发现任何有用的东西。我所能做的就是设置光标的样式。您可以使用robot来实现此目的: AWT机器人: 或玻璃机器人: com.sun.glass.ui.Robot; 可通过以下方式创建: com.sun.glass.ui.Application.GetApplication().createRobot() 要获取光标位置,请参阅其他帖子,了解有关java.awt.MouseInfo的问题 import java.awt.M

如何在JavaFX2中设置/获取光标的位置?我努力用谷歌搜索答案,但没有发现任何有用的东西。我所能做的就是设置光标的样式。

您可以使用robot来实现此目的:

AWT机器人:

或玻璃机器人:

com.sun.glass.ui.Robot; 可通过以下方式创建: com.sun.glass.ui.Application.GetApplication().createRobot()

要获取光标位置,请参阅其他帖子,了解有关java.awt.MouseInfo的问题

import java.awt.MouseInfo;
// get the mouse's position
Point p = MouseInfo.getPointerInfo().getLocation();

import java.awt.Robot;
// set the mouse position
new Robot().mouseMove( x, y );
注意:不要使用com.sun.*类(除非您使用的是Mac,请参见下文)

PS2。由于JavaFX8中可能会解决的JavaFX问题,您不能在Mac中使用java.awt类,正如Alexander Kirov所指出的,在Mac中您仍然需要使用com.sun类,如下所示:

// workaround for Mac only
com.sun.glass.ui.Robot robot =
       com.sun.glass.ui.Application.GetApplication().createRobot();

// getPosition of the mouse in Mac
int x = robot.getMouseX(); 
int y = robot.getMouseY();

其中一个可能在MacOS上出现问题。所以,你必须交换它们,所以,要小心。我的意思是,如果你需要你的解决方案是便携式的,检查一下,机器人在所有配置上都工作得很好。谢谢你的信息!幸运的是,我的工作场所有一台mac电脑。我将对此进行检查。建议使用JDK内部类(com.sun.*)不是一个好做法,这个答案也不是最好的方法(请参阅我的答案)。当您在MacOS上与JFX应用程序在同一个VM中启动AWT robot时,AWT robot可能会制造麻烦,在这种情况下,一个可能的选择是使用glass robot。看见在这种情况下,玻璃机器人是私人的,但不太可能有危险。谢谢你让我知道Mac的问题。。。但我仍然认为,当人们只想在屏幕上轻松获取鼠标位置时,我们应该向“标准”方向指出,而不是建议将Mac的com.sun黑客程序作为标准。是的,人们应该理解并接受,hach不是一种官方方式。这只是在有问题的情况下有一个选择。