Quel est le meilleur moyen d’obtenir la position absolue d’un nœud dans JavaFX? Supposons que nous ayons un nœud dans un volet (Hbox, Stackpane, ... ou tout autre volet) et que celui-ci peut avoir un parent lui-même . I voulez obtenir la position absolue de ce noeud et l'utiliser dans un autre volet?
Cela dépend un peu de ce que vous entendez par "absolu". Il existe un système de coordonnées pour le nœud, un système de coordonnées pour son parent, un système pour son parent, etc., et éventuellement un système de coordonnées pour Scene
et un pour l'écran (qui est potentiellement une collection de périphériques d'affichage physiques).
Vous voulez probablement soit les coordonnées relatives à la Scene
, auquel cas vous pouvez faire
Bounds boundsInScene = node.localToScene(node.getBoundsInLocal());
ou les coordonnées relatives à l'écran:
Bounds boundsInScreen = node.localToScreen(node.getBoundsInLocal());
Dans les deux cas, l'objet Bounds
résultant a les méthodes getMinX()
, getMinY()
, getMaxX()
, getMaxY()
, getWidth()
et getHeight()
.
En prenant le nom de la "fenêtre" de la scène principale et le nom du noeud "menu", vous pouvez le faire :-)
double X=Main.window.getX()+menu.getLayoutX();
double Y=Main.window.getY()+menu.getLayoutY();