Enums 为Vaadin 14 web应用程序中由枚举支持的单选按钮生成标签

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(

在一个14.1Web应用程序中,我使用Java13定义了一个enum(请参阅)来支持我的单选按钮()

请注意
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 ) );