web-dev-qa-db-fra.com

obtenir la position réelle d'un nœud dans javaFX

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?

10
maryam

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().

30
James_D

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();
0
Ragib