2009-04-21 6 views
0

Je souhaite ajouter un onglet à une certaine barre d'onglets dans la zone de contenu. La zone de contenu est dynamique et, en tant que telle, se trouve dans un fichier de classe différent. La seule façon que je connaisse pour obtenir l'état actuel de la barre d'onglets (ne pas créer un nouvel objet de barre d'onglets) est de créer une méthode statique et une variable pour accéder à l'objet. Cependant, j'ai des problèmes pour modifier la barre d'onglets après l'avoir obtenue. Je peux appeler des fonctions à l'intérieur sans trop de problèmes, comme récupérer des chaînes, mais je ne peux pas ajouter d'onglet, ce que je dois faire. Voici l'idée générale:Ajout d'un onglet GWT à partir d'un autre onglet

dans une classe nommée XYZ:

private static MyPersonalTabPanel mypersonalTabPanel; 

public XYZ { 
    myperosonalTabPanel = this; 
} 

dans mon autre fichier, sur le clic d'un bouton, je déclenche ceci:

MyPersonalTabPanel.getAppInstance().getXYZTabPanel().add(mywidget, "My Widget"); 

je peux utiliser ma fonction "getXYZTabPanel()" sans erreurs, mais quand j'essaye de "ajouter" il va simplement planter avec un écran blanc, pas d'erreurs pertinentes. De l'aide? J'ai vu des projets ajouter des onglets auparavant, mais je ne peux pas le trouver via un objet statique comme celui-ci.

Je ne l'ai pas encore à l'intérieur d'une méthode onClick, dois-je faire cela pour que j'accède à la variable de session statique? C'est essentiellement appelé le moment où la page se charge.

+0

Je suis un peu confus quant à ce que l'intention est - voulez-vous trouver un moyen d'ajouter un onglet d'une autre classe? ou demandez-vous comment le faire fonctionner en utilisant un champ statique? – Chii

Répondre

1

Vérifiez votre ordre d'initialisation? Vous devez vous assurer que l'instance de XYZ à laquelle vous souhaitez ajouter un onglet est celle créée par votre dernier appel à "new XYZ()", et vous devez vous assurer qu'il a déjà été ajouté avant essayez d'ajouter l'onglet.

En outre, je suppose que XYZ étend MyPersonalTabPanel, qui étend TabPanel? Pour clarifier, est-ce Code s'applique à votre situation:

public class MyPersonalTabPanel extends TabPanel { 
    public static MyPersonalTabPanel instance; 

    public MyPersonalTabPanel() { 
    instance = this; 
    } 
} 

public class TestClass { 
    public void createPanel() { 
    RootPanel.get().add(new MyPersonalTabPanel()); 
    } 
    public void addTab(Widget widget) { 
    MyPersonalTabPanel.instance.add(widget, "My Widget"); 
    } 
} 

Assurez-vous que createPanel() de TestClass est appelée avant l'appel AddTab (Widget) se produit.

Questions connexes