3

JTreeノードを編集すると、ノードのユーザーオブジェクトは失われます(文字列に設定されます)。元のユーザーオブジェクトを取得するにはどうすればよいですか?データベース内の編集された名前を更新するために、ユーザーオブジェクトの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メソッドはありますか?

4

1 に答える 1

4

TreeModel.valueForPathChanged()を実装します。または、を使用している場合はDefaultTreeModel.valueForPathChanged()をオーバーライドしますDefaultTreeModel。これは、新しいユーザーオブジェクトが設定される場所であり、元のユーザーオブジェクトにアクセスする機会を提供します。

于 2012-07-19T06:09:52.480 に答える