为Vaadin 14 Web应用程序中的枚举生成单选按钮的标签

问题描述 投票:2回答:1

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
enums vaadin renderer vaadin-flow
1个回答
2
投票

如对问题的评论中所讨论的…

[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 #107setRenderer小部件上,调用TextRenderer,并传递由枚举的TextRenderer方法的方法引用制成的TextRenderer

RadioButtonGroup

因此,您的代码总看起来像这样。

showAllOrFilter
© www.soinside.com 2019 - 2024. All rights reserved.