Vaadin - 如何拥有两列数据(带字段的网格布局和带环绕文本的标签数据)
Vaadin - How to have two columns of data (Gridlayout with field and Label data with wrapping text)
我正在尝试创建一个 CustomComponent
,其中我有两列(可能是四列),其中两列是 Labels
的行。第一列是标识符,例如 "Firstname: "、"Lastname: " 等,第二列是标识符的实际值,例如 "John"、"Smith" 等。
我正在使用 GridLayout
以便所有数据都很好地排列(例如,John 与 Smith 在下一行排列)。
我遇到的问题是,我希望第二列占据 space 宽度的剩余部分,并在文本太长时换行到下一行。因此,例如,如果我有一段长的评论 Label
,我希望文本换行,但它一直在屏幕之外。
现在我明白了 the Label
needs to have a defined width to be able to wrap the text 但是我不知道如何使用它来使标签中的文本在网格中环绕。我已经尝试了所有我能想到的。
我的代码是:
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
文本换行?
做
int colums = 2;
int rows = 0;
GridLayout gridLayout = new GridLayout(colums,rows);
希望有所帮助
答案是多种因素的结合。首先,我能提供的最大提示是查看 Consume available space in Vaadin Gridlayout, but consider line breaks
之后,上面的代码本应使用 setValue()
,却使用了 setCaption()
。
结合这两件事解决了问题和文本换行。
我正在尝试创建一个 CustomComponent
,其中我有两列(可能是四列),其中两列是 Labels
的行。第一列是标识符,例如 "Firstname: "、"Lastname: " 等,第二列是标识符的实际值,例如 "John"、"Smith" 等。
我正在使用 GridLayout
以便所有数据都很好地排列(例如,John 与 Smith 在下一行排列)。
我遇到的问题是,我希望第二列占据 space 宽度的剩余部分,并在文本太长时换行到下一行。因此,例如,如果我有一段长的评论 Label
,我希望文本换行,但它一直在屏幕之外。
现在我明白了 the Label
needs to have a defined width to be able to wrap the text 但是我不知道如何使用它来使标签中的文本在网格中环绕。我已经尝试了所有我能想到的。
我的代码是:
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
文本换行?
做
int colums = 2;
int rows = 0;
GridLayout gridLayout = new GridLayout(colums,rows);
希望有所帮助
答案是多种因素的结合。首先,我能提供的最大提示是查看 Consume available space in Vaadin Gridlayout, but consider line breaks
之后,上面的代码本应使用 setValue()
,却使用了 setCaption()
。
结合这两件事解决了问题和文本换行。