java Vaadin如何拥有两列数据(带字段的Gridlayout和带包装文本的标签数据)
我试图创建一个CustomComponent
,其中我有两列(可能有四列),其中两列是Labels
的行。第一列是标识符,如“Firstname:”、“Lastname:”等,第二列是标识符的实际值,如“John”、“Smith”等
我使用了一个GridLayout
,这样数据就可以很好地排列起来(例如,约翰和史密斯在下一行)
我遇到的问题是,我希望第二列占据剩余的空格宽度,当文本太长时,将其换行到下一行。例如,如果我有一个注释Label
,这是一个段落,我想把文本包装起来,但它只是一直离开屏幕
现在我明白了the ^{
我的代码是:
GridLayout gridLayout = new GridLayout();
gridLayout.setColumns(2);
gridLayout.setColumnExpandRatio(0, 1f);
gridLayout.addComponent(new Label("Firstname"));
gridLayout.addComponent(firstnameValueLabel);
gridLayout.addComponent(new Label("Lastname"));
gridLayout.addComponent(lastnameValueLabel);
// and so on.
VerticalLayout verticalLayout = new VerticalLayout();
verticalLayout.addComponent(myHeaderComponent);
verticalLayout.addComponent(gridLayout);
我已经尝试了所有我能想到的方法来进行valueLabel
(firstnameValueLabel
等)文本包装,但似乎没有任何效果。我试图给GridLayout
和VerticalLayout
分配特定的大小,而不是100%,以此类推,但没有成功。我使用VerticalLayout
是因为我在数据之上有额外的东西
也许使用GridLayout
不是最好的选择,也许有更好的方法来排列不是字段的表单。虽然FormLayout
将是完美的,但它似乎只适用于输入字段
在任何情况下,我应该如何实现这一点,以便Label
文本包装
# 1 楼答案
答案是多方面的。首先,我能提供的最大建议是看看Consume available space in Vaadin Gridlayout, but consider line breaks
之后,上面的代码使用了
setCaption()
,而它本应该使用setValue()
将这两件事结合起来解决了问题,并对文本进行了包装