在Vaadin中,只要有足够的空间而不是更多,HorizontalLayout就会给每个组件提供它所需的空间。
但是,在使用BeanItemContainer创建的表中,所有列的宽度都相同。因为表格内容是动态加载的,宽度每次都不同,而且不同的PC具有不同的字体大小,所以我们不希望以像素为单位指定固定的宽度。
我们如何才能告诉行的行为像html表或HorizontalLayout,因为它给每一行提供了正确的宽度,而不是更多也不是更少?
发布于 2016-02-11 21:46:38
您只能使用CSS规则进行尝试:
.v-table td:last-child {
    margin-right:auto;
}Chrome>=4、Firefox>=3.5、Opera>=9.6、Safari>=3.2、IE>=9
发布于 2012-03-30 15:09:28
听起来你想要的是扩张率。它的工作原理类似于HorizontalLayout的扩展比率。
有关更多信息,请查看https://vaadin.com/api/com/vaadin/ui/Table.html#setColumnExpandRatio%28java.lang.Object,%20float%29。
Table oTable = new Table();
oTable.addContainerProperty("First name", String.class, null);
oTable.addContainerProperty("Last name", String.class, null);
oTable.addContainerProperty(YEAR_PROPERTY, Integer.class, null);
oTable.addItem(new Object[] { "Nicolaus","Copernicus",new Integer(1473) }, new Integer(1));
oTable.addItem(new Object[] { "Tycho",   "Brahe",     new Integer(1546) }, new Integer(2));
oTable.addItem(new Object[] { "Giordano","Bruno",     new Integer(1548) }, new Integer(3));
oTable.addItem(new Object[] { "And this is a very very long cell", "Newton", new Integer(1643) }, new Integer(4));
oTable.setSizeFull();
oTable.setColumnExpandRatio(YEAR_PROPERTY, 1.0f);编辑:如果你设置了一个单元格的展开比(例如最后一个),所有其他的单元格只需要占用它们需要的空间。这可能是针对您的需求的一种变通方法。
如果您注释掉最后添加的项,您将看到第一列仅占用所需的空间。
发布于 2013-04-23 18:38:28
setColumnWidth(-1)应启动自动伸缩。虽然这通常是默认的(即使在BeanItemContainers中也是如此,所以我很惊讶你没有自动看到这种行为。一个相关的概念,可能值得你去追求的是setSizeUndefined(),它是一个相当大的接口的方法。
https://stackoverflow.com/questions/9905914
复制相似问题