Gwt GXT工具栏已滚动
我正在开发一个简单的GXT小部件——它是一个树面板,使用setTopComponent添加了一个工具栏。 问题是,一旦树足够大,可以滚动,滚动条就不会只滚动树,而是滚动工具栏 应该更改什么,以便工具栏保持在页面顶部,并且只滚动树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) {
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?