2010-11-15 11 views
5

Y a-t-il un composant comme StackPanel ou DecoratedStackPanel qui a la capacité d'afficher plus d'un panneau dans la pile à la fois? Je voudrais avoir l'option d'étendre tout ou de réduire n'importe quel nombre de panneaux que je veux.GWT StackPanel limitation?

Répondre

3

Ok, puisque je n'ai pas de réponse, c'est ce qui a fonctionné pour moi. Google ne permet pas vraiment d'étendre les panneaux existants pour ajouter ou modifier des fonctionnalités, donc j'ai téléchargé la source, copié StackPanel.java, DecoratorPanel.java et DecoratedStackPanel.java dans un package dans mon projet gwt.

Le principal changement que je avais vraiment besoin de faire était de changer le comportement du showStack(int index) dans la classe StackPanel.java de

public void showStack(int index) { 
    if ((index >= getWidgetCount()) || (index < 0) || (index == visibleStack)) { 
     return; 
    } 

    if (visibleStack >= 0) { 
     setStackVisible(visibleStack, false); 
    } 

    visibleStack = index; 
    setStackVisible(visibleStack, true); } 

à quelque chose comme ceci:

public void showStack(int index) { 

    if ((index >= getWidgetCount()) || index < 0) { 
     return; 
    } 

    visibleStack = index; 
    setStackVisible(visibleStack, !getWidget(visibleStack).isVisible()); 


    } 

Je suis sûr qu'il est possible pour nettoyer un peu, mais cela a fait l'affaire. La raison pour laquelle les autres classes doivent être copiées dans le même package est que StackPanel.java fait référence à certaines de leurs méthodes qui ont uniquement la visibilité du package.

+1

Dans GWT 2.5, il n'était plus nécessaire de copier les autres classes. –