2015-02-06 4 views
0

Я разрабатываю простой виджет GXT - это TreePanel с ToolBar, добавленным с помощью setTopComponent. Проблема заключается в том, что, как только дерево будет достаточно большим, чтобы его можно было прокручивать, полоса прокрутки не прокручивает только дерево, а также прокручивает ToolBar.Прокрутка GXT ToolBar

enter image description here

Что должно быть изменение, так что ToolBar остается на верхней части страницы, и только дерево прокручивается.

public class TreePanelExample extends LayoutContainer { 

    @Override 
    protected void onRender(Element parent, int index) { 
     super.onRender(parent, index); 

     Folder model = getTreeModel(); 

     TreeStore<ModelData> store = new TreeStore<ModelData>(); 
     store.add(model.getChildren(), true); 

     final TreePanel<ModelData> tree = new TreePanel<ModelData>(store); 
     tree.setDisplayProperty("name"); 
     tree.setAutoLoad(true); 

     ToolBar toolBar = new ToolBar(); 
     toolBar.setBorders(true); 

     toolBar.add(new Button("Dummy button", new SelectionListener<ButtonEvent>() { 
      public void componentSelected(ButtonEvent ce) { 
       Info.display("Dummy button", "I'm so dumb!"); 
      } 
     })); 

     ContentPanel panel = new ContentPanel(); 
     panel.setHeaderVisible(false); 
     panel.setCollapsible(false); 
     panel.setFrame(false); 
     panel.setAutoWidth(true); 
     panel.setAutoHeight(true); 
     // setting fixed size doesn't make any difference 
     // panel.setHeight(100); 
     panel.setTopComponent(toolBar); 
     panel.add(tree); 

     add(panel); 
    } 
+0

версию GXT вы используете? –

+0

Я использую версию 2.3.0 – gnom1gnom

ответ

0

Проблема заключается в том, что

TreePanelExample extends LayoutContainer 

, а вместо этого он должен распространяться Viewport.

Кроме того, я не должен был использовать

panel.setAutoWidth(true); 
panel.setAutoHeight(true); 

Плюс необходимо добавить основную панель с помощью

new BorderLayoutData(LayoutRegion.CENTER); 

Вот полное решение:

public class TreePanelExample extends Viewport { 

public TreePanelExample() { 
    super(); 
    setLayout(new BorderLayout()); 

    Folder model = getTreeModel(); 

    TreeStore<ModelData> store = new TreeStore<ModelData>(); 
    store.add(model.getChildren(), true); 

    final TreePanel<ModelData> treePanel = new TreePanel<ModelData>(store); 
    treePanel.setDisplayProperty("name"); 
    treePanel.setAutoLoad(true); 

    ToolBar toolBar = new ToolBar(); 
    toolBar.setBorders(true); 

    toolBar.add(new Button("Dummy button", new SelectionListener<ButtonEvent>() { 
     public void componentSelected(ButtonEvent ce) { 
      Info.display("Dummy button", "I'm so dumb!"); 
     } 
    })); 

    ContentPanel panel = new ContentPanel(); 
    panel.setBodyBorder(false); 
    panel.setHeaderVisible(false); 

    panel.setTopComponent(toolBar); 
    panel.setLayout(new FitLayout()); 
    panel.add(treePanel); 

    BorderLayoutData centerData = new BorderLayoutData(LayoutRegion.CENTER); 
    centerData.setMargins(new Margins(5, 5, 5, 5)); 
    centerData.setCollapsible(true); 
    panel.syncSize(); 

    add(panel, centerData); 
}