如何在 Vaadin 24 中显示具有各种不同节点的树?

问题描述 投票:0回答:1

Vaadin 的早期版本曾经有一个实际的树组件,如 Vaadin 6 (https://vaadin.com/download/book-of-vaadin/vaadin-6/html/components.tree.html)当前组件集没有树。

有 TreeGrid,它看起来更像是一个具有一级子节点的表,奇怪的是,这些子节点必须与表本身属于同一类(假设它需要与顶层共享 addColumns)。至少我似乎无法弄清楚如何使其与不同的类作为子节点一起工作。

还有一个第三方插件(https://vaadin.com/directory/component/tree),但它似乎也支持一个类的树(示例中的部门)。

我当然可以通过使用某种 TreeNode 中间类来解决这个问题。但恕我直言,如果您创建一个以域对象作为输入的树,您会期望渲染器类逻辑,并支持同一树中的多个类。

假设我有一个包含城市、街道、建筑物、公寓和房间的域,我如何在 Vaadin (24+) 的树结构中表示它?

vaadin vaadin24
1个回答
0
投票

TreeGrid
背后的想法是让Java类型系统帮助您避免编程错误。您始终可以通过使用
Object
作为项目类型(即
TreeGrid<Object>
)并在不同位置使用
instanceof
检查来处理不同类型之间的差异,从而选择退出该级别的类型安全。

另一种选择就像您提到的那样,通过引入某种

TreeNode
类(甚至类层次结构)来使类型显式化。无论哪种情况,您通常都会得到大致相同数量的代码,这主要是关于您想要如何构建它的主观问题。

© www.soinside.com 2019 - 2024. All rights reserved.