【发布时间】:2009-06-28 23:13:25
【问题描述】:
我正在实现一个 Java JTree 面板。该面板包含从一组树状数据结构构建的 TreeModel(组合列表 - 不同类)。我根据我定义的一组接口从外部 jar 实现中获取这些数据结构。
treenodes 包含一个复选框,用户可以选中该复选框以指示选中的节点和所有子节点都将变为“活动”,即由节点表示的对象应该做一些事情,比如从一个数据库。
也可以选择树节点而不“激活”它们,即不选中复选框。
除此之外,程序的其他部分也可以切换数据模型对象的激活状态。因此,构建树模型的数据模型是激活状态的来源。这必须通过动态(取消)选中复选框来反映在树视图中。
现在,我该如何实现这一切?谁应该成为哪些变化的听众?
现在,节点中的所有类都从一个包含激活字段的抽象类扩展而来。这是真正的数据源。当此字段发生变化时,应通知所有订阅的侦听器(EventListener),这包括复选框。
我还有一个 TreeSelectionModel,它基于默认的 TreeSelectionModel,但扩展了检查是否需要检查子/父母的功能。
我的问题可能不是很清楚,但这段复杂的代码也是如此。希望你能帮忙。
【问题讨论】: