我有一个显示我自己的 TreeModel 的 JTree。 TreeModel 是从数据库“按需”加载的(有点难看,因为部分是在 EDT 上完成的,但这不是我的问题)。有一个菜单允许用户选择要应用于树的过滤器。
更改过滤器时,节点可能会被 TreeModel 隐藏或新节点可能会显示出来。这就是我的问题所在 - 我看不到从模型中生成适当的 treeStructureChanged 事件的合理方法,因为我不知道哪些节点确实发生了变化。似乎没有简单的方法可以告诉听众整个模型现在(可能)不同了。
有没有一种简单的方法可以告诉所有 TreeModelListeners 整个模型已经更改? (当然我想尽量保留选择/展开状态)。
最佳答案
因为你想发出整个树结构已经改变的信号,发送一个TreeModelEvent
对于每个听众的树根。 GenealogyModel
方法 fireTreeStructureChanged()
是 How to Use Trees: Creating a Data Model 中提到的示例.
关于java - Swing JTree : It seems to be impossible to properly send treeStructureUpdated events to model listeners,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551651/