获取 JavaFX 中节点的真实位置

2022-09-02 23:07:57

在JavaFX中获取节点绝对位置的最佳方法是什么?

想象一下,我们在Pane(Hbox,Stackpane或任何其他窗格)中有一个节点,并且本身可能有一个父节点。

我想获取该节点的绝对位置,并在另一个窗格中使用它。


答案 1

这有点取决于你所说的“绝对”是什么意思。节点有一个坐标系,其父节点有一个坐标系,父节点有一个坐标系,依此类推,最终还有一个用于屏幕的坐标系(这可能是物理显示设备的集合)。Scene

您可能希望坐标相对于 ,在这种情况下,您可以执行Scene

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

或相对于屏幕的坐标:

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

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


答案 2

假设主舞台“窗口”的名称,以及节点“菜单”的名称,您可以执行此操作:-)

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

推荐