gpt4 book ai didi

checkbox - 以编程方式取消选中 Vaadin 上下文菜单中的复选框

转载 作者:行者123 更新时间:2023-12-02 18:43:41 27 4
gpt4 key购买 nike

我创建了一个具有树结构的上下文菜单(添加了菜单项,然后在这些菜单项中添加了复选框作为子菜单项)。这对于手动添加/删除项目来说效果很好。然而,当涉及到以编程方式重置项目时,一般组件与特定组件(在本例中为复选框)之间存在冲突。

Component comp = contextMenu.getItems().get(x).getSubMenu().getItems().get(y);
if (comp instanceof Checkbox) {
((Checkbox) comp).setValue(false);
}

请注意,comp 实际上不是 Checkbox 的一个实例;相反,它返回为 com.vaadin.flow.component.contextmenu.MenuItem 并且该项目无法转换为复选框。所以问题是,如何取消选中给定的复选框?

最佳答案

霍克所说:

如果您创建了类似于 menuItem.getSubMenu().addItem(new Checkbox("My option")) 的菜单项,那么您可以迭代子组件并取消选择它们:

menuItem.getSubMenu().getItems().forEach(subMenuItem -> {
subMenuItem.getChildren()
.filter(Checkbox.class::isInstance)
.map(Checkbox.class::cast)
.forEach(c -> c.setValue(false));
});

但另一种方法是使用 setCheckable(true) 使项目可供选择。然后您将取消选择它们:

menuItem.getSubMenu().getItems().forEach(subMenuItem -> subMenuItem.setChecked(false));

使用 setCheckable(true) 时,我会想到两个缺点。首先,可检查的项目不能有子菜单。其次,当选中某个项目时,菜单将关闭。

关于checkbox - 以编程方式取消选中 Vaadin 上下文菜单中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67734525/

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