2012-10-24 6 views
4

J'ai un TextField pour lequel je veux afficher un Tooltip dans certaines circonstances.JavaFX: comment régler la bonne position de l'info-bulle?

Après avoir effectué les contrôles que j'exécuter le code followig:

textFieldUsername.setTooltip(new Tooltip("Enter username!")); 
textFieldUsername.getTooltip().setAutoHide(true); 
textFieldUsername.getTooltip().show(textFieldUsername, 1, 1); 

Alors, quand quelqu'un essaie de se connecter avec le nom d'utilisateur vide, il obtient une invite Tooltip sur le « nom d'utilisateur » TextField. Mais quand il s'agit d'action, le Tooltip apparaît dans le coin supérieur gauche de l'écran.

Dois-je calculer coords de ma scène, puis ajouter mes TextField coords à eux, ou il est un moyen de mettre ces 1, 1 arguments de l'appel de show() être par rapport à la position TextField?

Répondre

9

Je pense que les coordonnées sont toujours relatives à l'écran. Pour calculer les coordonnées des composants, vous devez incorporer les coordonnées de la scène et de la fenêtre.

Point2D p = label.localToScene(0.0, 0.0); 
label.getTooltip().show(label, 
     p.getX() + label.getScene().getX() + label.getScene().getWindow().getX(), 
     p.getY() + label.getScene().getY() + label.getScene().getWindow().getY()); 
+1

droit, comme indiqué dans javadoc: « ' show public void (Noeud ownerNode, à double screenX, à double screenY) ' Affiche la fenêtre contextuelle à l'x, y spécifiées emplacement par rapport à l'écran ** ** " –

Questions connexes