gxt (ext gwt) Сетка и ширина столбца - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь создать сетку, которая заполняет ширину ContentPanel. Сетка должна иметь два столбца одинакового размера, которые охватывают всю ширину сетки. Изменение размера окна браузера должно соответственно обновить размер сетки. Я ожидаю, что приведенный ниже код выполнит это, но сетка не увеличивается при изменении размера браузера, и между вторым столбцом и правым краем сетки существует разрыв ~15px.

Есть идеи?

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); 
}

}

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Причина появления дополнительного пробела справа от таблицы: 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 голосов
/ 09 февраля 2012

Вы пробовали это?

grid.getView().setForceFit(true);

Сетка поместится в свой контейнер.Также вам действительно следует использовать другой макет для контейнера, чтобы внутренние элементы подходили для контейнера (допустимы FitLayout, BorderLayout, RowLayout)

...