2010-09-29 2 views
1

J'utilise RaphaelGWT pour dessiner des formes avec la bibliothèque RaphaelJS sous-jacente. Les deux projets sont merveilleux. Cependant, j'ai été coincé pendant un certain temps sur la question des objets texte dans Raphael étant affiché comme centré par défaut.Pourquoi getOffsetWidth() et getElement(). GetClientWidth() renvoie 0 pour un widget dans GWT?

J'ai essayé de créer un objet Text et de le centrer par défaut, puis de mesurer sa largeur afin d'ajuster la position d'un second objet texte, puis de supprimer le premier. Mais je ne peux pas obtenir la largeur de l'objet Texte original. FYI, dans RaphaelGWT, les objets Shape utilisés étendent Widget. J'ai donc essayé getAbsoluteLeft(), getElement().getAbsoluteRight(), getOffsetWidth(), getElement().getClientWidth(). getAbsoluteLeft() est le seul qui renvoie ce que j'attendrais. getAbsoluteRight() renvoie la même valeur que getAbsoluteLeft(), et les deux getOffsetWidth() et getElement().getClientWidth() renvoient 0.

Pourquoi? FYI, j'ai calculé la largeur de la valeur x d'origine utilisée pour créer la forme de texte (x est alors devenu le centre) et getAbsoluteLeft(), qui a effectivement renvoyé la valeur attendue.

+0

Etes-vous sûr que vous appelez ces méthodes * après * l'ajout du Widget au DOM? –

+0

oui, je voulais dire que dans le post original, supposé que je serais demandé cela; getAbsoluteLeft() ne retournerait pas une valeur valide si elle n'avait pas été ajoutée au DOM, n'est-ce pas? – user26270

Répondre

3

L'élément doit être visible pour que getOffsetWidth() renvoie les valeurs correctes.

Questions connexes