Enums 为Vaadin 14 web应用程序中由枚举支持的单选按钮生成标签
在一个14.1Web应用程序中,我使用Java13定义了一个enum(请参阅)来支持我的单选按钮() 请注意Enums 为Vaadin 14 web应用程序中由枚举支持的单选按钮生成标签,enums,vaadin,renderer,vaadin-flow,Enums,Vaadin,Renderer,Vaadin Flow,在一个14.1Web应用程序中,我使用Java13定义了一个enum(请参阅)来支持我的单选按钮() 请注意getDisplayName方法,该方法提供用作单选按钮标签的文本 我已成功定义此枚举支持的单选按钮 private RadioButtonGroup < FilterOrNot > showAllOrFilter ; … showAllOrFilter = new RadioButtonGroup <>() ; showAllOrFilter.setItems(
getDisplayName
方法,该方法提供用作单选按钮标签的文本
我已成功定义此枚举支持的单选按钮
private RadioButtonGroup < FilterOrNot > showAllOrFilter ;
…
showAllOrFilter = new RadioButtonGroup <>() ;
showAllOrFilter.setItems( FilterOrNot.SHOW_ALL , FilterOrNot.FILTER ) ;
正如关于这个问题的评论中所讨论的
RadioButtonGroup
缺少setItemLabelGenerator
RadioButtonGroup
小部件缺少在Vaadin 14.1中类似小部件上看到的方便的setItemLabelGenerator
方法。例如
请参阅(并投票赞成!)此票证上要求添加此类方法的功能请求:
解决方法:调用setRenderer
,传递TextRenderer
在这个特性出现之前,我建议你使用一个对象
在名为showAllOrFilter
的RadioButtonGroup
小部件上,调用并传递由枚举的getDisplayName
方法引用生成的
showAllOrFilter // Your `RadioButtonGroup` widget.
.setRenderer(
new TextRenderer <>(
FilterOrNot :: getDisplayName // Method reference.
)
);
showAllOrFilter//您的“RadioButtonGroup”小部件。
.setRenderer(
新文本渲染器(
FilterOrNot::getDisplayName//方法引用。
)
);
总之,你的代码是这样的
showAllOrFilter = new RadioButtonGroup <>();
showAllOrFilter.setItems( FilterOrNot.SHOW_ALL , FilterOrNot.FILTER );
showAllOrFilter.setValue( FilterOrNot.SHOW_ALL );
showAllOrFilter.setRenderer( new TextRenderer <>( FilterOrNot :: getDisplayName ) );
showAllOrFilter=newradiobuttongroup();
showAllOrFilter.setItems(FilterOrNot.SHOW_ALL,FilterOrNot.FILTER);
showAllOrFilter.setValue(FilterOrNot.SHOW_ALL);
setRenderer(新的TextRenderer(FilterOrNot::getDisplayName));
setRenderer(新的TextRenderer(FilterOrNot::getDisplayName))
应该这样做吗?你可以在这个问题上竖起大拇指,将标准的setItemLabelGenerator(…)
添加到RadioButtongGroup
@ErikLumme谢谢,我刚刚投票支持这个问题:
showAllOrFilter // Your `RadioButtonGroup` widget.
.setRenderer(
new TextRenderer <>(
FilterOrNot :: getDisplayName // Method reference.
)
);
showAllOrFilter = new RadioButtonGroup <>();
showAllOrFilter.setItems( FilterOrNot.SHOW_ALL , FilterOrNot.FILTER );
showAllOrFilter.setValue( FilterOrNot.SHOW_ALL );
showAllOrFilter.setRenderer( new TextRenderer <>( FilterOrNot :: getDisplayName ) );