Vaadin 14 radiobuttongroup 将自定义字符串显示为选项
Vaadin 14 radiobuttongroup display custom Strings as options
我正在使用 Vaadin 14.1.21 + Java JDK/JRE 1.8
我在数据类中有一个 select 单选按钮组,它后面有一个布尔字段。
我不想显示 "true" / "false" 作为用户的选项,而是自定义字符串,假设 "red option" 为 true,"green option" 为 false .
我在API中看到有一个叫做setRenderer的函数,但我不知道如何使用它。我已经想出了如何在网格中做到这一点,但不是在 selection box...
选择框(todo):
rbgroup = new RadioButtonGroup<>();
rbgroup.setRequired(true);
rbgroup.setLabel("Title of radiobuttongroup");
rbgroup.setItems(true, false); // how to display them in the frontend as "Green option" / "Red option"?
....
binder.forField(rbgroup).bind("mybooleanField");
网格:(完成)
addColumn((mn) -> { // custom display
final String displayAS;
if (mn.getBoolValue()) {
displayAS = "Option Red";
} else {
displayAS = "Option Green";
}
return displayAS;
})
.setHeader("Columntitle")
.setFlexGrow(1)
.setSortable(true)
.setKey("Color Option");
如 code examples of RadioButtonGroup 所示,设置渲染器以显示文本可以像这样完成(在示例代码和您的代码之间混合):
RadioButtonGroup<Boolean> rbgroup = new RadioButtonGroup<>();
rbgroup.setRequired(true);
rbgroup.setLabel("Title of radiobuttongroup");
rbgroup.setItems(true, false);
rbgroup.setRenderer(new TextRenderer<>((mn) -> {
if (mn) {
return "Option Red";
} else {
return "Option Green";
}
}));
如果您想显示任何 Vaadin 组件而不仅仅是文本,您可以使用 ComponentRenderer
而不是 TextRenderer
。我使用一个简单的 Span
作为示例,但您可以构建复杂的布局和 return 那些。
RadioButtonGroup<Boolean> rbgroup = new RadioButtonGroup<>();
rbgroup.setRequired(true);
rbgroup.setLabel("Title of radiobuttongroup");
rbgroup.setItems(true, false);
rbgroup.setRenderer(new ComponentRenderer<>((mn) -> {
if (mn) {
return new Span("Option Green");
} else {
return new Span("Option Red");
}
}));
我正在使用 Vaadin 14.1.21 + Java JDK/JRE 1.8
我在数据类中有一个 select 单选按钮组,它后面有一个布尔字段。
我不想显示 "true" / "false" 作为用户的选项,而是自定义字符串,假设 "red option" 为 true,"green option" 为 false .
我在API中看到有一个叫做setRenderer的函数,但我不知道如何使用它。我已经想出了如何在网格中做到这一点,但不是在 selection box...
选择框(todo):
rbgroup = new RadioButtonGroup<>();
rbgroup.setRequired(true);
rbgroup.setLabel("Title of radiobuttongroup");
rbgroup.setItems(true, false); // how to display them in the frontend as "Green option" / "Red option"?
....
binder.forField(rbgroup).bind("mybooleanField");
网格:(完成)
addColumn((mn) -> { // custom display
final String displayAS;
if (mn.getBoolValue()) {
displayAS = "Option Red";
} else {
displayAS = "Option Green";
}
return displayAS;
})
.setHeader("Columntitle")
.setFlexGrow(1)
.setSortable(true)
.setKey("Color Option");
如 code examples of RadioButtonGroup 所示,设置渲染器以显示文本可以像这样完成(在示例代码和您的代码之间混合):
RadioButtonGroup<Boolean> rbgroup = new RadioButtonGroup<>();
rbgroup.setRequired(true);
rbgroup.setLabel("Title of radiobuttongroup");
rbgroup.setItems(true, false);
rbgroup.setRenderer(new TextRenderer<>((mn) -> {
if (mn) {
return "Option Red";
} else {
return "Option Green";
}
}));
如果您想显示任何 Vaadin 组件而不仅仅是文本,您可以使用 ComponentRenderer
而不是 TextRenderer
。我使用一个简单的 Span
作为示例,但您可以构建复杂的布局和 return 那些。
RadioButtonGroup<Boolean> rbgroup = new RadioButtonGroup<>();
rbgroup.setRequired(true);
rbgroup.setLabel("Title of radiobuttongroup");
rbgroup.setItems(true, false);
rbgroup.setRenderer(new ComponentRenderer<>((mn) -> {
if (mn) {
return new Span("Option Green");
} else {
return new Span("Option Red");
}
}));