java 在Vaadin 23.3.0中,有没有办法从checkboxgroup组件中获取checkbox组件?

5ktev3wc  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(128)

我需要一个复选框组件来添加一个工具提示。但是,该组件是一个CheckboxGroup类型。有没有办法从CheckboxGroup组件中获取一个复选框组件?
我尝试在CheckbocGroup类上查找不同类型的方法,但我可以返回枚举类型的项目。我需要一个作为Vaadin组件类的子类的类。我期待类似以下内容:

CheckboxGroup<Enum> checkboxGroup = new CheckboxGroup();
checkboxGroup.setItems(Enum.values())

Checkbox checkbox = checkboxGroup.getCheckboxOfType(Enum.Type);
checkbox.setTooltipText("TEST");
6rqinv9w

6rqinv9w1#

无法获取CheckBoxGroup中的CheckBox。
我建议创建单独的复选框,而不是创建一个复选框组。
如果您喜欢使用CheckBoxGroup,则可以添加功能请求:https://github.com/vaadin/flow-components/issues

zrfyljdw

zrfyljdw2#

我已经找到了解决问题的方法,虽然不是最好的方法,但它确实达到了我的目的:

checkboxGroup.getElement().getChildren().forEach(child -> {
        child.getComponent().ifPresent(component -> {
            if (component instanceof Checkbox) {
                final Checkbox checkbox = (Checkbox)component;
                if (Objects.equals(checkbox.getLabel(), Enum.TYPE.toString())) {
                  checkbox.setTooltipText("TEST");
               }
            }
        });
    });

通过getElement,我设法访问checkboxGroup的子对象。在一个循环中,我遍历它们并检查它是否是一个checkbox类的示例。如果是,我将它们转换到那个类并添加工具提示。
如果checkboxGroup组件的内部结构在Vaadin的更高版本中发生变化,则此解决方案可能不再有效。

相关问题