TreeModel
TreeModel (JTree가 사용하는 데이터 모델)
TreeModel은 JTree가 사용하는 모델이에요. JTree와 관련 클래스는 TreeModel의 노드를 식별하기 위해 TreePath을 광범위하게 사용해요. TreeModel이 같은 부모 아래의 두 다른 인덱스에서 equals로 비교해 같은 객체를 반환하면, 결과 TreePath 객체도 동일한 것으로 간주돼요.
본문
일부 구현은 두 TreePath이 같으면 동일한 노드를 식별한다고 가정할 수 있어요. 이 조건이 충족되지 않으면 그리기 문제와 기타 이상한 현상이 발생할 수 있어요. 즉, 주어진 부모에 대해 getChild가 같은 Object(equals로 판단)를 반환하면 문제가 발생할 수 있으므로 이를 피하는 것이 권장돼요.
마찬가지로 JTree와 관련 클래스는 TreePath을 Map에 넣어요. 따라서 노드가 두 번 요청되면 반환값은(equals 메서드로) 같아야 하고 같은 hashCode를 가져야 해요.
트리 모델에 대한 추가 정보와 사용자 지정 구현 예시는 The Java Tutorial의 "How to Use Trees"에서 확인할 수 있어요. 관련 클래스는 TreePath이에요.
메서드
void addTreeModelListener(TreeModelListener l)— 트리 변경 후 게시되는TreeModelEvent에 대한 리스너를 추가해요.Object getChild(Object parent, int index)— 부모의 자식 배열에서index위치의 자식을 반환해요.int getChildCount(Object parent)—parent의 자식 수를 반환해요.int getIndexOfChild(Object parent, Object child)—parent에서child의 인덱스를 반환해요.Object getRoot()— 트리의 루트를 반환해요. 트리에 노드가 없을 때만null을 반환해요.boolean isLeaf(Object node)—node가 리프이면true를 반환해요.void removeTreeModelListener(TreeModelListener l)—addTreeModelListener로 이전에 추가된 리스너를 제거해요.void valueForPathChanged(TreePath path, Object newValue)— 사용자가path가 식별하는 항목의 값을newValue로 변경했을 때 호출돼요.