获取 JavaFX 中节点的真实位置
在JavaFX中获取节点绝对位置的最佳方法是什么?
想象一下,我们在Pane(Hbox,Stackpane或任何其他窗格)中有一个节点,并且本身可能有一个父节点。
我想获取该节点的绝对位置,并在另一个窗格中使用它。
在JavaFX中获取节点绝对位置的最佳方法是什么?
想象一下,我们在Pane(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();