此面板保持位置:绝对应用。我怎么能阻止它?

时间:2010-10-21 18:58:53

标签: gwt css-position

我正在使用AbsolutePanel做一些拖放式的东西。我将子窗口小部件添加到AbsolutePanel,然后使用absolutePanel.setWidgetPosition来设置它们的位置。

但我一直收到这个错误:

  

java.lang.IllegalStateException:com.google.gwt.user.client.ui.AbsolutePanel缺少CSS'位置:{relative,absolute,fixed}'

堆栈跟踪指向setWidgetPosition调用。

BUT!我不仅已经调用了absolutePanel.getElement.getStyle()。setPosition(Position.RELATIVE),我还应用了一个带有position:relative属性的样式名称。当我使用FireBug检查元素时,它的样式属性中包含“position:absolute”,可能会覆盖其他所有内容。

我怎样摆脱这个警告?

实际的行为似乎工作正常,但也许我错过了一些东西。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

不确定,如果这个bug确实得到修复,因为我仍然遇到GWT 2.6.0的这个问题。

查看AbsolutePanel的代码时,我注意到当它从AbsolutePanel中删除时,它会清空子元素的位置值。 将子项重新添加到AbsolutePanel时,position属性保持为空。 如果重新添加的子项本身是AbsolutePanel,则这是有问题的,因为在这种情况下,当在子AbsolutePanel上调用setWidgetPosition时会发生IllegalStateException异常。

当你正在做一些阻力&放弃通常伴随添加/删除小部件的东西我认为这就是发生的事情。

解决方法: 从父AbsolutePanel中删除myChildAbsolutePanel.getElement().getStyle().setProperty("position", "relative")后立即致电myChildAbsolutePanel

远非美丽 - 但对我有用。