在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();