如何让GXT网格占用所有可用宽度?

Cug*_*uga 6 grid gwt gxt

我在GXT中有一个网格,如下所示:

List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig config = new ColumnConfig();
config.setId("type");
config.setHeader("Type");
config.setWidth(50);
configs.add(config);
config = new ColumnConfig();
config.setId("text");
config.setHeader("Info");
config.setWidth(75);
configs.add(config);

columnModel = new ColumnModel(configs);
listStore = new ListStore<DtoModel>();

grid = new Grid<DtoModel>(listStore, columnModel);
grid.setAutoHeight(true);
grid.setAutoWidth(true);

VerticalPanel verticalPanel = new VerticalPanel();
verticalPanel.setLayout(new FillLayout());
verticalPanel.add(grid);
Run Code Online (Sandbox Code Playgroud)

这样就可以创建网格,只有一个例外 - 宽度限制为列宽的总和.当我放弃列宽时,网格最终有0宽度.

有没有办法让这个网格及其列扩展以填充可用的整个区域?

编辑:困难之一是该ColumnConfig.setWidth()方法只接受int一个参数,所以我不能将"100%"指定为字符串或类似的东西.

Καr*_*hικ 7

这是这样做的方法:

grid.getView().setAutoFill(true);
Run Code Online (Sandbox Code Playgroud)

这是一个要记住的关键点:使用setAutoFill()调整列的大小时,gxt将始终调整所有其他列的大小,以便网格继续适合容器.如果没有自动填充,如果您只使用autoExpand列,如果您调整一列的大小,网格可能会比包含组件更大(或更小),在这种情况下,您必须手动调整网格大小以适应 - 这不仅是痛苦,在大多数情况下,最终用户几乎不可能.


小智 5

GridView中有一个强制所有列适合可用空间的函数.这就像为每列设置1的flex.

grid.getView().setForceFit(true);
Run Code Online (Sandbox Code Playgroud)