TreeModel

TreeModel (JTree가 사용하는 데이터 모델)

TreeModelJTree가 사용하는 모델이에요. JTree와 관련 클래스는 TreeModel의 노드를 식별하기 위해 TreePath을 광범위하게 사용해요. TreeModel이 같은 부모 아래의 두 다른 인덱스에서 equals로 비교해 같은 객체를 반환하면, 결과 TreePath 객체도 동일한 것으로 간주돼요.

출처: Java API Reference

본문

일부 구현은 두 TreePath이 같으면 동일한 노드를 식별한다고 가정할 수 있어요. 이 조건이 충족되지 않으면 그리기 문제와 기타 이상한 현상이 발생할 수 있어요. 즉, 주어진 부모에 대해 getChild가 같은 Object(equals로 판단)를 반환하면 문제가 발생할 수 있으므로 이를 피하는 것이 권장돼요.

마찬가지로 JTree와 관련 클래스는 TreePathMap에 넣어요. 따라서 노드가 두 번 요청되면 반환값은(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로 변경했을 때 호출돼요.

더 알아보기 (Learn more)

Java 공식 API