我正在使用Vaadin 14 + Java。
我有一个组合框,有一个枚举,尽可能选择项目。
我想在组合框中尽可能地显示enum,但我想在mouseover / tooltip上显示更长的属性"name“。
我发现以前版本的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;
}
}发布于 2020-04-14 08:30:47
在HTML级别上,通过在元素上定义title属性来创建工具提示。
但是这个title属性必须放在选项上,而不是comboBox本身上,而且ComboBox没有类似于comboBox.setItemTooltipProvider(..)那样的java。
但是,有一个用于定义Renderer的java,然后将其应用于每个项目。我们也可以使用一个应用于每个项目的ComponentRenderer,而不是使用一个只是将选项的名称作为字符串返回的渲染器。在这里,您创建了一个包含显示的项目名的Span组件(例如,),并在该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;
}));

https://stackoverflow.com/questions/61202914
复制相似问题