Эта панель продолжает получать положение: абсолютное применение. Как я могу это остановить? - PullRequest
2 голосов
/ 21 октября 2010

Я использую AbsolutePanel для перетаскивания мышью.Я добавляю дочерние виджеты в AbsolutePanel, а затем использую absolutePanel.setWidgetPosition, чтобы установить их положение.

Но я продолжаю получать эту ошибку:

java.lang.IllegalStateException: com.google.gwt.user.client.ui.AbsolutePanel отсутствует позиция CSS ': {относительный, абсолютный, фиксированный}'

точки трассировки стека прямо к вызову setWidgetPosition.

НО!Я не только уже вызывал absolutePanel.getElement.getStyle (). SetPosition (Position.RELATIVE), я также применил имя стиля с атрибутом position :lative.Когда я проверяю элемент с помощью FireBug, он имеет атрибут style с позицией «position: absolute» прямо в нем, предположительно перекрывая все остальное.

Как мне избавиться от этого предупреждения?

фактическое поведение , кажется, работает нормально, но, возможно, я что-то упускаю.

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

Кажется, это ошибка в GWT:

http://code.google.com/p/google-web-toolkit/issues/detail?id=5251

0 голосов
/ 20 января 2015

Не уверен, что эта ошибка действительно была исправлена, поскольку я все еще испытываю эту проблему с GWT 2.6.0.

Просматривая код AbsolutePanel, я заметил, что он очищает значение позиции атрибута дочернего элемента при его удалении из AbsolutePanel. Когда дочерний элемент повторно добавляется в AbsolutePanel, атрибут позиции остается пустым. Это проблематично, если повторно добавленный дочерний элемент сам является AbsolutePanel, поскольку в этом случае возникает исключение IllegalStateException при вызове setWidgetPosition для дочернего AbsolutePanel.

Поскольку вы занимались перетаскиванием, обычно добавляя / удаляя виджеты, я предполагаю, что именно это и произошло.

Обход: Вызовите myChildAbsolutePanel.getElement().getStyle().setProperty("position", "relative") сразу после удаления myChildAbsolutePanel из родительского AbsolutePanel.

Далеко не красивая, но работает на меня.

...