如何通过编辑更改树节点后获取原始值

时间:2017-11-09 07:03:26

标签: java swing

我有一个可编辑的JTree,我为它添加TreeModelListener。我想知道如何在编辑后为每个节点记录(获取)原始值。

1 个答案:

答案 0 :(得分:0)

所以,在@MadProgrammer和@Sergiy Medvynskyy的帮助下,我实现了这个目标。 我在DefaultTreeModel中@Override valueForPathChanged(TreePath path,Object newValue),使用path查找已编辑的节点,然后使用getUserObject,它是oldValue。关键点是在super.valueForPathChanged(path,newValue)之前编写自己的代码;这样你就可以获得oldValue。 样品:

typelTreeModel = new DefaultTreeModel(typeTreeRoot){
                @Override
                public void valueForPathChanged(TreePath path, Object newValue) {
                    DefaultMutableTreeNode editNode = (DefaultMutableTreeNode) path.getLastPathComponent();
                    int level = editNode.getLevel();
                    if(level == 2){
                        String oldValue = (String) editNode.getUserObject();
                        System.out.println(oldValue);
                    }
                    super.valueForPathChanged(path, newValue);
                }
            };