Java自定义树模型更新问题



树的结构如下:

根分支机构——树叶

我使用TreeModel DefaultTreeModel和我的对象实现TreeNode接口

叶子是一些对象:

public class Leaf implements TreeNode
{
   // implementation

分支有叶子列表:

public class Branch implements TreeNode
{
 private List<Leaf> leafs;
 // implementation

根是分支的容器:

public class Root implements TreeNode
{
  private List<Branch> branches;
  // implementation

当我添加新的叶子时,我的树不会更新,当我添加叶子并使用根对象创建新的DefaultTreeModel时,它会更新。我看DefaultMutableTreeNode实现,没有任何事件触发插入子…我做错了什么?以前,我尝试实现TreeModel接口,它看起来比实现三个类的TreeNode接口好得多,但结果是相似的。我也读过GlazedLists,但我不喜欢它们的树的概念。对我来说,最好的是实现TreeModel接口概念,但是当模型中的一些内部列表添加新元素时如何更新模型?

在没有看到代码的情况下,很难确定-尽管如此,我打赌我的猜测:您没有通知TreeModel您的插入;-)

如果你的节点实现不是MutableTreeNode类型,你必须做的代码片段:

 // do the parent wiring in your custom TreeNode
 int position = myBranch.addChild(node);
 // notify the model 
 model.nodesWhereInserted(myBranch, new int[] {pos}); 

如果它是MutableTreeNode类型,更简单的方法是通过DefaultTreeModel中的便利方法

 model.insertNodeInto(node, myBranch, position)

看起来像Swing中的并发问题,可能更新超出了EDT,

你已经添加了新的对象,然后测试DefaultTreeModel,如果包含新的对象,如果对象存在,那么你必须包装(所有更新)到invokeLater,为SerializableObservate将更好地寻找invokeAndWait

相关内容

  • 没有找到相关文章

最新更新