【发布时间】:2014-01-15 20:49:24
【问题描述】:
在 Vaadin 框架 (v7.1.9) 中,我们如何从其父级中删除 Component?
我只知道removeComponent 函数,但这需要我掌握父级的句柄(丑陋):
ComponentContainer parent = (ComponentContainer) child.getParent();
parent.removeComponent(child);
我试图只 detach 孩子,但将其从“应用程序”中删除,而没有从 UI 中删除 Component。
【问题讨论】:
-
这是这样做的方法。
-
你为什么觉得这很丑?这就像从集合中删除一个元素(
HashSet,ArrayList...)。 -
好的,我喜欢 HashSet/ArrayList 比较。但是,在使用
HashSet或ArrayList时,您不需要强制转换。remove在Collection中定义。在 Vaadin 中,removeComponent在ComponentContainer.. 中定义,但Component.getParent()返回一个HasComponents对象。对我来说,这要么是 API 的缺陷,要么不是我想做的事情。大家觉得呢? -
老实说,我没有检查接口,但这是一个好点。我认为这样做的原因是一些父母正在实施
SingleComponentContainer而不是HasComponents。Panel例如。但我不是只使用它来研究 vaadin。请问您在什么情况下有一个组件但不知道它的父级? -
在 Java 集合比较中,如何获取子元素的父集合?这是完全不同的情况。我认为您应该删除布局类中的组件,您只需调用
removeComponent方法而不进行任何强制转换