为什么getOffsetWidth()和getElement().getClientWidth()为GWT中的小部件返回0?

为什么getOffsetWidth()和getElement().getClientWidth()为GWT中的小部件返回0?,gwt,raphael,Gwt,Raphael,我正在使用RaphaelGWT使用底层RaphaelJS库绘制形状。两个项目都很棒。然而,拉斐尔的文本对象在默认情况下显示为居中,这一问题让我陷入了一段时间 我尝试创建一个文本对象,默认情况下将其居中,然后测量其宽度以调整第二个文本对象的位置,然后删除第一个文本对象。但我无法获得原始文本对象的宽度 仅供参考,在RaphaelGWT中,形状对象用于扩展小部件。所以我尝试了getAbsoluteLeft(),getElement().getAbsoluteRight(),getOffsetWidth

我正在使用RaphaelGWT使用底层RaphaelJS库绘制形状。两个项目都很棒。然而,拉斐尔的文本对象在默认情况下显示为居中,这一问题让我陷入了一段时间

我尝试创建一个文本对象,默认情况下将其居中,然后测量其宽度以调整第二个文本对象的位置,然后删除第一个文本对象。但我无法获得原始文本对象的宽度

仅供参考,在RaphaelGWT中,形状对象用于扩展小部件。所以我尝试了
getAbsoluteLeft()
getElement().getAbsoluteRight()
getOffsetWidth()
getElement().getClientWidth()
。getAbsoluteLeft()是唯一一个返回我期望的结果的函数
getAbsoluteRight()
返回与
getAbsoluteLeft()
相同的值,并且
getOffsetWidth()
getElement().getClientWidth()
返回0

为什么?


仅供参考,我根据用于创建文本形状的原始x值(x随后成为中心)和实际返回预期值的
getAbsoluteLeft()
,计算了宽度。

对于getOffsetWidth()返回正确的值。

您确定在将小部件添加到DOM后调用这些方法吗?是的,我想在原始帖子中提到,假设有人问我这个问题;如果没有将getAbsoluteLeft()添加到DOM中,它不会返回有效值,是吗?