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

时间:2015-06-30 21:18:57

标签: java javafx javafx-2 javafx-8

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

2 个答案:

答案 0 :(得分:32)

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

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

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

或相对于屏幕的坐标:

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

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

答案 1 :(得分:0)

如果要将本地坐标转换为scenne坐标,可以使用localToScene方法。

 Point2D point2D = node.localToScene(0,0);

例如,如果您想知道窗格的中心但在场景坐标中

Point2D point2D = pane.localToScene(pane.getWidth()/2,pane.getHeight()/2);