在javaFX中获取节点的实际位置

在JavaFX中获取节点绝对位置的最佳方法是什么? 假设我们在一个窗格(Hbox,Stackpane,……或任何其他窗格)中有一个节点,并且可能有父节点。 我想获得该节点的绝对位置并在另一个窗格中使用它?

这取决于你所说的“绝对”。 节点有一个坐标系,它的父坐标系,父节点坐标系等等,最后是Scene的坐标系和屏幕的坐标系(可能是物理显示设备的集合)。

你可能想要相对于Scene的坐标,在这种情况下你可以做

 Bounds boundsInScene = node.localToScene(node.getBoundsInLocal()); 

或相对于屏幕的坐标:

 Bounds boundsInScreen = node.localToScreen(node.getBoundsInLocal()); 

在任何一种情况下,生成的Bounds对象都有getMinX()getMinY()getMaxX()getMaxY()getWidth()getHeight()方法。

假设主舞台“窗口”的名称,以及节点“菜单”的名称,你可以这样做:-)

 double X=Main.window.getX()+menu.getLayoutX(); double Y=Main.window.getY()+menu.getLayoutY();