编辑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方法?
实现TreeModel.valueForPathChanged()。如果使用DefaultTreeModel
,则覆盖DefaultTreeModel.vvalueForPathChangeD()。这是设置新用户对象的地方,它为您提供了访问原始用户对象的机会。