获取 JavaFX 中节点的真实位置
Get real position of a node in JavaFX
在 JavaFX 中获取节点绝对位置的最佳方法是什么?
假设我们在窗格(Hbox、Stackpane 或任何其他窗格)中有一个节点,并且它本身可能有一个父节点。
我想获取该节点的绝对位置并在另一个窗格中使用它。
"absolute" 有点取决于您的意思。节点有一个坐标系,其父级有一个坐标系,其父级有一个坐标系,依此类推,最终 Scene
有一个坐标系,屏幕有一个坐标系(这可能是物理的集合显示设备)。
您可能想要相对于 Scene
的坐标,在这种情况下您可以这样做
Bounds boundsInScene = node.localToScene(node.getBoundsInLocal());
或者相对于屏幕的坐标:
Bounds boundsInScreen = node.localToScreen(node.getBoundsInLocal());
无论哪种情况,生成的 Bounds
对象都有 getMinX()
、getMinY()
、getMaxX()
、getMaxY()
、getWidth()
和 getHeight()
方法。
假设主舞台的名称 "window" 和节点的名称 "menu" 你可以这样做:-)
double X=Main.window.getX()+menu.getLayoutX();
double Y=Main.window.getY()+menu.getLayoutY();
如果您想将本地坐标转换为场景坐标,您可以使用 localToScene 方法。
Point2D point2D = node.localToScene(0,0);
例如,如果您想知道窗格的中心但在场景坐标中
Point2D point2D = pane.localToScene(pane.getWidth()/2,pane.getHeight()/2);
在 JavaFX 中获取节点绝对位置的最佳方法是什么?
假设我们在窗格(Hbox、Stackpane 或任何其他窗格)中有一个节点,并且它本身可能有一个父节点。
我想获取该节点的绝对位置并在另一个窗格中使用它。
"absolute" 有点取决于您的意思。节点有一个坐标系,其父级有一个坐标系,其父级有一个坐标系,依此类推,最终 Scene
有一个坐标系,屏幕有一个坐标系(这可能是物理的集合显示设备)。
您可能想要相对于 Scene
的坐标,在这种情况下您可以这样做
Bounds boundsInScene = node.localToScene(node.getBoundsInLocal());
或者相对于屏幕的坐标:
Bounds boundsInScreen = node.localToScreen(node.getBoundsInLocal());
无论哪种情况,生成的 Bounds
对象都有 getMinX()
、getMinY()
、getMaxX()
、getMaxY()
、getWidth()
和 getHeight()
方法。
假设主舞台的名称 "window" 和节点的名称 "menu" 你可以这样做:-)
double X=Main.window.getX()+menu.getLayoutX();
double Y=Main.window.getY()+menu.getLayoutY();
如果您想将本地坐标转换为场景坐标,您可以使用 localToScene 方法。
Point2D point2D = node.localToScene(0,0);
例如,如果您想知道窗格的中心但在场景坐标中
Point2D point2D = pane.localToScene(pane.getWidth()/2,pane.getHeight()/2);