JTree节点重命名保留用户对象

时间:2012-07-19 05:41:54

标签: java swing jtree

编辑JTree节点时,节点的用户对象将丢失(设置为String)。如何获取原始用户对象?因为我想获取用户对象的id,以便更新数据库中已编辑的名称。

我正在使用TreeModelListener的treeNodesChanged方法,如下所示。

public void treeNodesChanged(TreeModelEvent e) {
    DefaultMutableTreeNode node;
    node = (DefaultMutableTreeNode) (e.getTreePath().getLastPathComponent());
    try {
        int index = e.getChildIndices()[0];
        node = (DefaultMutableTreeNode) (node.getChildAt(index));
    } catch (NullPointerException ex) {}        
    System.out.println(node.getUserObject().getClass()); // my user object gone
}

那么有什么方法可以在编辑之前获取原始用户对象?要覆盖的任何DefaultTreeCellRenderer或DefaultTreeCellEditor方法?

1 个答案:

答案 0 :(得分:4)

实施TreeModel.valueForPathChanged()。如果您使用的是DefaultTreeModel,请覆盖DefaultTreeModel.valueForPathChanged()。这是设置新用户对象的位置,它使您有机会获得原始用户对象。