确定是否在JTree中删除了节点

时间:2015-06-01 19:08:35

标签: java swing jtree

现在,我的TreeSelectionListener上有一个JTree。这很好用。但是,我需要检测节点已被删除的情况。我不知道如何使用TreeSelectionEvent。

我没有在JavaDoc中看到任何关于它的内容。我正在寻找类似TableModelEvent的东西,它有一个getType()方法,可以让你知道某些东西是否被更新,删除或插入到表中。知道如何检测这个吗?

我不能使用TreeModelListener,因为当我调用时:

((DefaultTreeModel)getModel()).removeNodeFromParent(node);

在我的树上,它会触发valueChanged(TreeSelectionEvent)被触发。这就是我想逃避的。

类似的东西:

public void valueChanged(TreeSelectionEvent treeSelectionEvent){
    if(treeSelectionEvent.someMethod()){ <----need this
        return;
    }
}

1 个答案:

答案 0 :(得分:3)

  

我需要检测节点已被删除的情况

要检测节点是否已被删除,您可以使用TreeModelListener。简单的例子:

DefaultTreeModel model = new DefaultTreeModel(new DefaultMutableTreeNode("Root"));
JTree tree = new JTree(model);
model.addTreeModelListener(new TreeModelListener(){
    public  void treeNodesRemoved(TreeModelEvent e){
        //do something
    }
    //further listener implementation here
});

编辑:为了防止在删除节点时触发Selection侦听器,您可以

  1. 删除选择侦听器
  2. 删除节点
  3. 添加选择侦听器
相关问题