我正在使用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”,可能会覆盖其他所有内容。
我怎样摆脱这个警告?
实际的行为似乎工作正常,但也许我错过了一些东西。
答案 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
。
远非美丽 - 但对我有用。