Gwt GXT工具栏已滚动

Gwt GXT工具栏已滚动,gwt,scrollbar,toolbar,gxt,treepanel,Gwt,Scrollbar,Toolbar,Gxt,Treepanel,我正在开发一个简单的GXT小部件——它是一个树面板,使用setTopComponent添加了一个工具栏。 问题是,一旦树足够大,可以滚动,滚动条就不会只滚动树,而是滚动工具栏 应该更改什么,以便工具栏保持在页面顶部,并且只滚动树 public class TreePanelExample extends LayoutContainer { @Override protected void onRender(Element parent, int index) {

我正在开发一个简单的GXT小部件——它是一个树面板,使用setTopComponent添加了一个工具栏。 问题是,一旦树足够大,可以滚动,滚动条就不会只滚动树,而是滚动工具栏

应该更改什么,以便工具栏保持在页面顶部,并且只滚动树

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);
    }
公共类TreePanelExample扩展了LayoutContainer{
@凌驾
受保护的void onRender(元素父元素,int索引){
super.onRender(父级,索引);
文件夹模型=getTreeModel();
TreeStore store=新的TreeStore();
store.add(model.getChildren(),true);
最终树面板树=新树面板(存储);
setDisplayProperty(“名称”);
tree.setAutoLoad(true);
工具栏=新工具栏();
工具栏。设置命令(true);
添加(新按钮(“虚拟按钮”,new SelectionListener()){
已选择公共无效组件(按钮事件ce){
信息显示(“虚拟按钮”,“我太笨了!”);
}
}));
ContentPanel=新的ContentPanel();
面板。设置头可服务(错误);
面板。可折叠(假);
面板设置框(假);
panel.setAutoWidth(真);
面板。设置自动高度(真);
//设置固定大小没有任何区别
//面板设置高度(100);
panel.setTopComponent(工具栏);
面板。添加(树);
添加(面板);
}
问题在于

TreePanelExample extends LayoutContainer
相反,它应该扩展视口

此外,我不应该使用

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);
}
公共类TreePanelExample扩展视口{
公共树面板示例(){
超级();
setLayout(新的BorderLayout());
文件夹模型=getTreeModel();
TreeStore store=新的TreeStore();
store.add(model.getChildren(),true);
最终树面板树面板=新树面板(存储);
treePanel.setDisplayProperty(“名称”);
treePanel.setAutoLoad(真);
工具栏=新工具栏();
工具栏。设置命令(true);
添加(新按钮(“虚拟按钮”,new SelectionListener()){
已选择公共无效组件(按钮事件ce){
信息显示(“虚拟按钮”,“我太笨了!”);
}
}));
ContentPanel=新的ContentPanel();
面板设置顺序(错误);
面板。设置头可服务(错误);
panel.setTopComponent(工具栏);
panel.setLayout(新fitlaway());
面板。添加(树面板);
borderlayoutdatacenterdata=新的BorderLayoutData(LayoutRegion.CENTER);
设置页边距(新页边距(5,5,5,5));
centerData.SetCollapsable(真);
panel.syncSize();
添加(面板、中心数据);
}

您使用的是哪个版本的GXT?