2012-02-08 55 views
0

我试图创建一个填充宽度为ContentPanel的网格。网格应该有两列大小相等的跨越网格的整个宽度的列。调整浏览器窗口大小应相应地更新网格大小。我期望下面的代码能够实现这一点,但网格不会在浏览器大小调整时增长,并且第二列和网格右边缘之间存在差距。gxt(ext gwt)网格和列宽度

任何想法?

public class MyGrid extends ContentPanel { 

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

    setLayout(new FillLayout()); 
    ColumnConfig c1 = new ColumnConfig("value","value", 50); 
    ColumnConfig c2 = new ColumnConfig("value1","value1", 50); 
    ListStore<ModelData> store = new ListStore<ModelData>(); 
    for (int i=0; i<10; i++) { 
     BaseModelData data = new BaseModelData(); 
     data.set("value", "value"); 
     data.set("value1", "value1"); 
     store.add(data); 
    } 
    Grid<ModelData> grid = new Grid<ModelData>(store, new ColumnModel(Arrays.asList(new ColumnConfig[] {c1, c2}))); 
    grid.setAutoHeight(true); 
    grid.setAutoWidth(true); 
    grid.getView().setAutoFill(true); 
    add(grid); 
} 

}

+0

您使用的是哪个版本的gxt? 2.5/3.0? LE:我认为不是3.0 ..我建议您使用FitLayout()代替FillLayout – tartak 2012-02-09 08:21:32

+0

gxt 2.2.5。感谢您的建议,但我没有看到与FitLayout的行为有任何不同。 – 2012-02-13 17:34:52

回答

1

表右边额外空间的原因是grid.setAutoHeight()。删除它,它会消失。使用浏览器调整表格的大小似乎需要使用Viewport(我不明白为什么ContentPanel在没有上述代码中的网格的情况下会增长)。此代码完成了我正在尝试执行的操作:

public class MyGrid extends Viewport { 

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

    setLayout(new FitLayout()); 
    ColumnConfig c1 = new ColumnConfig("value","value", 50); 
    ColumnConfig c2 = new ColumnConfig("value1","value1", 50); 
    ListStore<ModelData> store = new ListStore<ModelData>(); 
    for (int i=0; i<10; i++) { 
     BaseModelData data = new BaseModelData(); 
     data.set("value", "value"); 
     data.set("value1", "value1"); 
     store.add(data); 
    } 
    final Grid<ModelData> grid = new Grid<ModelData>(store, new ColumnModel(Arrays.asList(new ColumnConfig[] {c1, c2}))); 
    grid.getView().setAutoFill(true); 
    ContentPanel panel = new ContentPanel(); 
    panel.setLayout(new FitLayout()); 
    panel.add(grid); 
    add(panel); 
    } 
} 
0

你试过吗?

grid.getView().setForceFit(true); 

网格将适合其容器。你也应该使用其他的容器布局来使内部元素适合容器(FitLayout,BorderLayout,RowLayout是可以接受的)

+0

我试着改变FitLayout并使用setForceFit而不改变行为。以下是表格呈现方式的截图:[link](http://imgur.com/NwOGv) - 注意右侧的额外空间。下面是调整浏览器大小后的外观:[link](http://imgur.com/VCzXR) – 2012-02-13 17:37:54