【发布时间】:2015-08-06 14:29:34
【问题描述】:
在处理任何MouseEvent 时,通过调用event.getSceneX()(或event.getScreenX(),如果这是我们想要的)等方法很容易获得鼠标坐标。但是,如果当前没有鼠标事件,我不知道如何在鼠标事件处理过程之外获取此信息?
在我的例子中:按下某个热键后,我希望相对于当前鼠标位置发生一些事情。但我无法获取位置信息。我该怎么做?
【问题讨论】:
在处理任何MouseEvent 时,通过调用event.getSceneX()(或event.getScreenX(),如果这是我们想要的)等方法很容易获得鼠标坐标。但是,如果当前没有鼠标事件,我不知道如何在鼠标事件处理过程之外获取此信息?
在我的例子中:按下某个热键后,我希望相对于当前鼠标位置发生一些事情。但我无法获取位置信息。我该怎么做?
【问题讨论】:
好的,我找到了至少一个解决方案,利用java.awt.MouseInfo,这是概念的概要:
if (view.isHover()) {
Point pointerLocation = MouseInfo.getPointerInfo().getLocation();
int sceneX = pointerLocation.x;
sceneX -= view.getScene().getWindow().getX();
sceneX -= view.getScene().getX();
int sceneY = pointerLocation.y;
sceneY -= view.getScene().getWindow().getY();
sceneY -= view.getScene().getY();
return new Point(sceneX, sceneY);
} else {
// mouse not in view
}
【讨论】: