2017-11-09 13 views
-1

私は編集可能なJTreeを作成し、TreeModelListenerを追加します。編集後にすべてのノードの原点値を記録する方法を知りたいツリーノードが編集によって変更された後に元の値を取得する方法

+1

あなたは私の詳細を与える値がString.Couldある – MadProgrammer

+0

値のキャッシュを維持? – lution

+0

@lution [パターンメメント](https://sourcemaking.com/design_patterns/memento) –

答えて

0

@MadProgrammerと@Sergiy Medvynskyyの助けを借りて、私はこれを達成しました。 DefaultTreeModelのvalueForPathChanged(TreePath path、Object newValue)をオーバーライドします。パスを使用して編集済みのノードを見つけ、次にそのオブジェクトの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); 
       } 
      };