2012-02-08 135 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