gpt4 book ai didi

java - Vaadin 14 组合框选择鼠标悬停时的工具提示

转载 作者:行者123 更新时间:2023-12-03 22:57:33 33 4
gpt4 key购买 nike

我正在使用 Vaadin 14 + Java。

我有一个组合框,其中有一个枚举作为可能的选择项。

我想在组合框中显示枚举作为可能的选择,但我想在鼠标悬停/工具提示上显示较长的属性“名称”。

我发现旧版本的 Vaadin 也存在同样的问题(显然没有解决方案),我想知道现在是否有一个选项可以做到这一点。

组合框

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 应用于每个项目,而不是使用简单地将选项名称返回为字符串的渲染器。您可以在此处创建一个包含显示的项目名称(例如“HIGH”)的 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;
}));

enter image description here

关于java - Vaadin 14 组合框选择鼠标悬停时的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61202914/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com