java - 当节点对象的状态发生变化时,如何动态更改 JTree View ?

标签 java swing jtree

我正在实现一个 Java JTree 面板。该面板包含由一组树状数据结构(复合列表的列表 - 不同类)构建的 TreeModel。我根据我定义的一组接口(interface)从外部 jar 实现中获取这些数据结构。

树节点包含一个复选框,用户可以选中该复选框以指示选中的节点和所有子节点将变为“Activity ”,即节点表示的对象应该执行某些操作,例如从数据库。

也可以选择树节点而不“激活”它们,即不选中复选框。

最重要的是,程序的其他部分也可以切换数据模型对象的激活状态。因此,构建树模型的数据模型是激活状态的来源。这必须通过动态(取消)选中复选框来反射(reflect)在 TreeView 中。

现在,我该如何实现这一切?谁应该成为哪些变化的听众?

现在,节点中的所有类都从包含激活字段的抽象类扩展而来。这是真正的数据源。当此字段更改时,应通知所有订阅的监听器(EventListener),这包括复选框。

我还有一个 TreeSelectionModel,它基于默认的 TreeSelectionModel,但扩展了检查是否需要检查子项/父项的功能。

我的问题可能不太清楚,但这段复杂的代码也是如此。希望您能帮忙。

最佳答案

你似乎有一堆 Activity 部件。最好通过 TreeModel 汇集所有更改,并让 JTree 作为监听器,因为它会自动进行。如果您的 TreeModelDefaultTreeModel 的子类,您将获得许多 fire* (fireTableStructureChangedfireTreeNodesChanged 等)方法,这些方法将提醒您的 JTree 重新绘制。确保在 AWT EventQueue 中触发事件。

here is a good tutorial包含大量使用Tree的示例。

关于java - 当节点对象的状态发生变化时,如何动态更改 JTree View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056011/

相关文章:

java - 从二叉搜索树中递归删除

java - 在 JDBC 中,为什么准备好的语句的参数索引从 1 而不是 0 开始?

java - 出现滚动条时包含 JPanel 的 JScrollPane 调整大小

Java 树选择问题

java - 扩展 JTree 的节点可最小化 GridBagLayout

java - JTree 和 JButtons - 鼠标悬停在 Button 上时渲染错误

java - 无法使用操作链和发布参数重定向到另一个 URL

Java - 检查 ArrayList 是否有重复项

java - Java中的Swing框架具有人脸识别和语音识别功能

java - 导入的数据仅显示在 JTable (Java) 的第一列中