2013-06-09 5 views
1

J'ai un TabLayoutPanel et je ne veux pas lui donner une hauteur fixe comme dans l'exemple de code suivant (tabPanel.setHeight("100px");). Je veux lui donner la hauteur du contenu de l'onglet, par exemple le HTML-Widget dans le premier onglet). Si je ne définis pas la hauteur manuellement, le contenu de l'onglet ne s'affiche pas du tout. Y a-t-il un moyen de le faire fonctionner avec une hauteur adaptée au contenu?GWT TabLayoutPanel - Hauteur dynamique?

public class GWTTest implements EntryPoint { 

    public void onModuleLoad() { 
     TabLayoutPanel tabPanel = new TabLayoutPanel(3, Unit.EM); 

     tabPanel.setAnimationDuration(400); 
     tabPanel.add(new HTML("Tab1 Content"), "Tab 1"); 

     tabPanel.add(new HTML("Tab2 Content"), "Tab 2"); 

     tabPanel.setHeight("100px"); 

     RootPanel.get().add(tabPanel); 

    } 
} 

J'ai essayé aussi mess directement dans le css avec le « débordement » et « postition » -attributes, mais cela rompt alors toujours l'animation ou autre chose.

Éditer: Il semble que le moyen le plus simple serait d'implémenter mon propre panneau à onglets - ou d'utiliser une bibliothèque javascript existante.

Répondre

0

J'ai également rencontré ce problème, mais malheureusement, il faut régler la hauteur. Toutes les solutions de contournement où un échec. Mais certains d'entre eux suggèrent ce qui suit.

Vous pouvez essayer de remplacer le TabLayoutPanel avec un HeaderPanel:

Un panneau qui comprend un en-tête (en haut), pied de page (en bas) et le contenu zone (milieu). Les zones d'en-tête et de pied de page se redimensionnent naturellement. La zone de contenu est allouée tout l'espace restant entre la zone d'en-tête et de pied de page .

Sinon, vous pouvez remplacer la méthode onResize() votre ResizeLayoutPanel calculer la hauteur de votre contenu intégré et régler la hauteur appropriée.

Si vous voulez une fonctionnalité de défilement, vous devez intégrer votre VerticalPanel dans un ScrollPanel ou utiliser CSS pour définir la propriété oferflow.

+0

La solution proposée fonctionne-t-elle ou non? :) Avez-vous trouvé une solution de travail ou ne fonctionne pas pour vous? – jan

+0

Aucune solution proposée n'a pas fonctionné pour moi. Le panneau d'onglets nécessite que la hauteur soit définie. Peut-être que j'ai fait quelque chose de mal. –

3

Les panneaux de disposition sont un type particulier de conteneur dans GWT qui a exigé des tailles de leurs parents et peut se dimensionner eux-mêmes. La base est les deux interfaces ProvidesResize et RequiresResize - indique que l'objet va dimensionner ses enfants, l'autre qu'il doit être dimensionné lorsque la taille du parent change. La plupart des panneaux de disposition (comme TabLayoutPanel) implémente les deux - il a besoin d'un changement de taille de son parent, et quand il l'obtient, il va dimensionner ses enfants, chaque onglet. Pour le démarrer, vous devez ajouter le widget racine à un RootLayoutPanel, pas un RootPanel. Il y a plusieurs différences principales - il n'y a qu'un seul RootLayoutPanel (aucune méthode get(String)), et le RootLayoutPanel dimensionnera ses enfants, contrairement à RootPanel.

Utilisez RootLayoutPanel.get().add(tabPanel) au lieu de RootPanel.get().add(tabPanel).