首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据内容宽度设置列宽的Vaadin表

根据内容宽度设置列宽的Vaadin表
EN

Stack Overflow用户
提问于 2012-03-28 18:47:49
回答 3查看 17.5K关注 0票数 3

在Vaadin中,只要有足够的空间而不是更多,HorizontalLayout就会给每个组件提供它所需的空间。

但是,在使用BeanItemContainer创建的表中,所有列的宽度都相同。因为表格内容是动态加载的,宽度每次都不同,而且不同的PC具有不同的字体大小,所以我们不希望以像素为单位指定固定的宽度。

我们如何才能告诉行的行为像html表或HorizontalLayout,因为它给每一行提供了正确的宽度,而不是更多也不是更少?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-11 21:46:38

您只能使用CSS规则进行尝试:

代码语言:javascript
运行
复制
.v-table td:last-child {
    margin-right:auto;
}

Chrome>=4、Firefox>=3.5、Opera>=9.6、Safari>=3.2、IE>=9

票数 1
EN

Stack Overflow用户

发布于 2012-03-30 15:09:28

听起来你想要的是扩张率。它的工作原理类似于HorizontalLayout的扩展比率。

有关更多信息,请查看https://vaadin.com/api/com/vaadin/ui/Table.html#setColumnExpandRatio%28java.lang.Object,%20float%29

代码语言:javascript
运行
复制
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);

编辑:如果你设置了一个单元格的展开比(例如最后一个),所有其他的单元格只需要占用它们需要的空间。这可能是针对您的需求的一种变通方法。

如果您注释掉最后添加的项,您将看到第一列仅占用所需的空间。

票数 3
EN

Stack Overflow用户

发布于 2013-04-23 18:38:28

setColumnWidth(-1)应启动自动伸缩。虽然这通常是默认的(即使在BeanItemContainers中也是如此,所以我很惊讶你没有自动看到这种行为。一个相关的概念,可能值得你去追求的是setSizeUndefined(),它是一个相当大的接口的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9905914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档