2010-04-27 4 views
3

J'utilise un TabLayoutPanel dans une application GWT, attachée au RootLayoutPanel de la page.TabLayoutPanel avec scroll

À l'intérieur de chaque onglet, j'ai un ScrollPanel, qui est utilisé pour afficher un FlexTable.

Est-il possible de faire grandir le TabLayoutPanel verticalement, de sorte que l'utilisateur peut faire défiler la page entière en utilisant la barre de défilement du navigateur, au lieu d'utiliser le ScrollPanel interne?

Répondre

1

Il suffit d'ajouter un nouveau style à la TabLayoutPanel:

this.addStyleName("tab-style-content"); 

Et définir dans votre CSS comme:

.tab-style-content .gwt-TabLayoutPanelContent 
{ 
overflow: auto;  
} 

Ainsi, la propriété overflow sera écrasé dans le GWT-TabLayoutPanelContent et la barre de défilement sera affiché automatiquement.

0

Si vous agrandissez TabLayoutPanel par rapport au panneau racine, vous obtenez une barre de défilement du navigateur.

+0

J'ai supprimé le ScrollPanel, en ajoutant le FlexTable directement au TabLayoutPanel. Cependant, à mesure que le FlexTable grandit avec les nouveaux éléments ajoutés, la hauteur TabLayoutPanel ne change pas. Dois-je appeler une méthode spécifique pour réorganiser le panneau? – muriloq

-1

Si je veux réaliser quelque chose comme ceci, je place toujours le TabLayoutPanel dans un SimplePanel et ajoute le SimplePanel au RootPanel. Je suppose que ce n'est pas la meilleure façon, mais ça fonctionne.

public void onModuleLoad() { 
    //Create TabPanel 
    TabPanel tp = new TabPanel(); 
    tp.add(new HTML("Foo"), "foo"); 
    tp.add(new HTML("Bar"), "bar"); 
    tp.add(new HTML("Baz"), "baz"); 
    tp.selectTab(1); 
    // Create SimplePanel and add TabPanel 
    SimplePanel sp =new SimplePanel(); 
    sp.add(tp); 
    // Add SimplePanel to the root panel. 
    RootPanel.get().add(sp); 
} 
+0

Cela n'a pas fonctionné, probablement parce que j'utilise TabLayoutPanel, introduit dans GWT 2.0, pas TabPanel. Voici un fil de discussion sur le même problème: http://www.coderanch.com/t/493012/Google-Web-Toolkit/Application-Frameworks/TabLayoutPanel-auto-height-grow-gwt – muriloq

+0

Pourquoi ne pas utiliser le TabPanel à la place? Les LayoutPanels ne sont-ils pas les seuls à être automatiquement associés au RootPanel? –

+0

'TabPanel' ne fonctionnera pas en mode' Standards', seulement en mode 'Quirks'. Donc, vous ne pouvez pas mélanger 'TabPanel' avec' FlowPanel' vous devez utiliser 'TabLayoutPanel' qui est apparemment paralysé par rapport à la façon dont il gère le dimensionnement automatique au niveau de navigation. –

2

La réponse courte est: Ce n'est pas possible avec LayoutPanel. La raison: LayoutPanel sont spécifiques aux applications qui doivent remplir la zone client du navigateur, ou en d'autres termes la partie visible par l'utilisateur. L'un des problèmes avec les navigateurs est d'avoir un widget qui a exactement la hauteur de la zone visible et qui se redimensionne automatiquement lorsque la fenêtre du navigateur est redimensionnée. C'est l'un des problèmes résolus par LayoutPanels.

Si vous souhaitez utiliser la barre de défilement du navigateur et pouvoir créer des pages plus longues que la zone visible, utilisez les panneaux «normaux».

BTW juste pour info vous êtes conscient que le FlexTable est lent dans le rendu et si possible mieux utiliser Grid.