2015-01-27 9 views
2

을 구현 중이며 valueForPathChanged을 제외한 모든 메서드를 구현했습니다.TreeModel 인터페이스 (Swing)에서 valueForPathChanged 메서드

내 경우에는 값이 프로그래밍 방식으로 변경되지 않습니다.

왜 TreeModel 인터페이스에이 방법이 포함되어 있습니까? 어떠한 상황에서도 JTree에 의해 사용 되었습니까, 아니면 구현되지 않은 채로해도됩니까?

참조 용 코드입니다. 나는 valueForPathChanged이 JTree에 의해 필요한지 여부를 단지 걱정 :

당신이 valueForPathChanged() 방법을 구현하는 데 필요한 동안
class ParamsTreeModel implements TreeModel { 
    private final TreeRoot root; 
    private final List<TreeModelListener> listeners = new ArrayList<TreeModelListener>(); 
    ParamsTreeModel(TreeRoot root) { 
     this.root = root; 
    } 

    @Override 
    public void addTreeModelListener(TreeModelListener l) { 
     listeners.add(l); 
    } 

    @Override 
    public Object getChild(Object parent, int index) { 
     if(parent instanceof Param) return null; 
     if(structuredMap.containsKey(parent)) { 
      return structuredMap.get(parent).get(index); 
     } 
     // Root 
     return partNames.get(index); 
    } 

    @Override 
    public int getChildCount(Object parent) { 
     if(parent instanceof Param) return 0; 
     if(parent instanceof TreeRoot) return partNames.size(); 
     return structuredMap.get(parent).size(); 
    } 

    @Override 
    public int getIndexOfChild(Object parent, Object child) { 
     if(parent instanceof TreeRoot) return partNames.indexOf(child); 
     return structuredMap.get(parent).indexOf(child); 
    } 

    @Override 
    public Object getRoot() { 
     return root; 
    } 

    @Override 
    public boolean isLeaf(Object node) { 
     return (node instanceof Param); 
    } 

    @Override 
    public void removeTreeModelListener(TreeModelListener l) { 
     listeners.remove(l); 
    } 

    @Override 
    public void valueForPathChanged(TreePath path, Object newValue) { 
     // TODO Auto-generated method stub 

    } 

} 

답변

3

TreeModel 인터페이스에 정의 된대로, 당신은 빈을 떠날 무료입니다. FileTreeModel, 예를 들어 here이있다. valueForPathChanged() 메서드는 일반적으로 셀 편집을 지원하는 데 사용됩니다. 구체적인 예로서, DefaultTreeModel에서의 구현은 here으로 표시되고 의 사용자 객체를 path으로 식별하고 [event] 노드를 변경합니다. "