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