在Vaadin Flow 14.1 Web应用程序中,使用Java 13,我定义了一个枚举(请参阅Tutorial)来支持单选按钮(RadioButtonGroup
)。
RadioButtonGroup
注意private enum FilterOrNot
{
SHOW_ALL( "Show all" ), FILTER( "Filter" );
private String displayName;
// Constructor
FilterOrNot ( String displayName ) { this.displayName = displayName; }
String getDisplayName ( ) { return this.displayName; }
}
方法,以提供用作单选按钮标签的文本。
我已经成功定义了由该枚举支持的单选按钮。
getDisplayName
这些单选按钮成功显示在屏幕上。但是它们的默认标题是枚举对象的全大写名称:“ SHOW_ALL”和“ FILTER”。我希望标签显示为大小写混合的文本“显示全部”和“过滤器”。
➥如何获取单选按钮小部件以调用后备枚举的private RadioButtonGroup < FilterOrNot > showAllOrFilter ;
showAllOrFilter = new RadioButtonGroup <>() ;
showAllOrFilter.setItems( FilterOrNot.SHOW_ALL , FilterOrNot.FILTER ) ;
并将返回的文本用作标签?
我已经看到可以通过getDisplayName
分配的ComponentRenderer
类。我猜这是解决方案。但是我无法正确使用语法。我怀疑尖括号中的泛型类型有误,但我真的不确定。该手册仅简短地提到了ComponentRenderer
,因此我不确定如何利用该类。
RadioButtonGroup::setRenderer
如对问题的评论中所讨论的…
RadioButtonGroup::setRenderer
缺少ComponentRenderer
showAllOrFilter.setRenderer(
new ComponentRenderer < RadioButtonGroup, FilterOrNot >( ( FilterOrNot filterOrNot ) -> {
return filterOrNot.getDisplayName() ;
})
);
小部件缺少在Vaadin 14.1中类似小部件上所见的便捷RadioButtonGroup
方法。例如,setItemLabelGenerator
。
请参阅(并投票!)这张票证上的功能请求,要求添加这种方法:RadioButtonGroup
setItemLabelGenerator
,并传递一个Select:setItemLabelGenerator
直到该功能有一天出现,我建议您使用Select:setItemLabelGenerator
对象。
在名为Add setItemLabelGenerator shorthand to RadioButtonGroup #107的setRenderer
小部件上,调用TextRenderer
,并传递由枚举的TextRenderer
方法的方法引用制成的TextRenderer
。
RadioButtonGroup
因此,您的代码总看起来像这样。
showAllOrFilter