2010-10-21 12 views
2

J'utilise un AbsolutePanel pour faire du glisser-déposer. J'ajoute des Widgets enfants à l'AbsolutePanel, puis j'utilise absolutePanel.setWidgetPosition pour définir leur position.Ce panneau conserve sa position: appliqué en absolu. Comment puis-je l'arrêter?

Mais je continue à obtenir cette erreur:

java.lang.IllegalStateException: com.google.gwt.user.client.ui.AbsolutePanel is missing CSS 'position:{relative,absolute,fixed}'

les points de trace de pile droit à l'appel setWidgetPosition.

MAIS! Non seulement j'ai déjà appelé absolutePanel.getElement.getStyle(). SetPosition (Position.RELATIVE), j'ai aussi appliqué un nom de style avec un attribut position: relative. Quand j'inspecte l'élément avec FireBug, il a un attribut de style avec "position: absolute" juste dedans, probablement en surchargeant tout le reste.

Comment puis-je me débarrasser de cet avertissement?

Le comportement réel semble fonctionner correctement, mais peut-être qu'il me manque quelque chose.

Répondre

0

Je ne sais pas, si ce bug effectivement été réparé que je rencontre toujours ce problème avec GWT 2.6.0.

En regardant dans le code de AbsolutePanel j'ai remarqué qu'il vide la valeur de la position attibute d'un élément enfant quand il est retiré du AbsolutePanel. Lorsque l'enfant est ajouté à nouveau à l'AbsolutePanel, l'attribut de position reste vide. Ceci est problématique si l'enfant rajouté lui-même est un AbsolutePanel, car dans ce cas, une exception IllegalStateException se produit lorsque setWidgetPosition est appelée sur l'enfant AbsolutePanel.

Comme vous faisiez quelques glisser & drop stuff qui va généralement avec l'ajout/suppression de widgets je suppose que c'est ce qui est arrivé.

Solution: Appel myChildAbsolutePanel.getElement().getStyle().setProperty("position", "relative") droit après la suppression myChildAbsolutePanel de son parent AbsolutePanel. Loin d'être beau - mais travaille pour moi.