2012-02-08 3 views
0

ContentPanel 너비를 채우는 눈금을 만들려고합니다. 그리드에는 그리드의 전체 너비에 걸쳐있는 동일한 크기의 두 개의 열이 있어야합니다. 브라우저 창의 크기를 조정하면 그리드 크기가 적절히 업데이트됩니다. 아래 코드에서이 작업을 수행 할 것으로 기대하지만 브라우저 크기가 커지면 그리드가 커지지 않으며 두 번째 열과 그리드의 오른쪽 가장자리 사이에는 ~15px 간격이 있습니다.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이 아니라고 생각합니다. FillLayout() 대신 FitLayout()을 사용하는 것이 좋습니다 – tartak

+0

gxt 2.2.5. 제안 주셔서 감사합니다,하지만 난 FitLayout와 행동의 차이를보고 아니에요. –

답변

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) –