我正在使用 Vaadin 14 + Java。
我有一个带有枚举的组合框作为可能的选择项。
我想在组合框中显示枚举作为可能的选择,但我想在鼠标悬停/工具提示上显示较长的属性“名称”。
我看到旧版本的 Vaadin 也存在同样的问题(显然没有解决方案),并且想知道现在是否有一个选项可以做到这一点。
ComboBox
ComboBox<MyEnum> cb = new ComboBox<>();
cb.setLabel("MyComboBox");
cb.setItems(MyEnum.values());
//cb.setDescription --> does not exist for ComboBox?
我的枚举类:
public enum MyEnum {
HIGH("High long name explanation"),
MEDIOCRE("Mediocre long name explanation"),
LOW("Low long name explanation");
private final String name;
private MyEnum(String name) {
this.name = name;
}
public String getValue(){
return name;
}
}
在 HTML 级别上,创建工具提示是通过定义title
元素上的属性。
但是该 title 属性必须放置在选项上,而不是组合框本身,并且ComboBox
没有 java API 来执行此操作comboBox.setItemTooltipProvider(..)
.
然而,有一个 java API 用于定义渲染器,然后将其应用于每个项目。我们还可以使用ComponentRenderer
应用于每个项目。在那里你创建一个Span
包含显示的项目名称(例如“HIGH”)的组件,并在该 Span 元素上定义 title 属性。
ComboBox<MyEnum> comboBox = new ComboBox<>();
comboBox.setLabel("MyComboBox");
comboBox.setItems(MyEnum.values());
comboBox.setRenderer(new ComponentRenderer<>(item -> {
Span span = new Span(item.name());
span.getElement().setProperty("title", item.getValue());
return span;
}));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)