2011-02-01 5 views
2

jtree가 있는데 형제 노드를 선택하기 만하면됩니다. 사용자가 형제가 아닌 노드를 선택하면 이전에 선택한 노드의 선택을 취소하겠습니다. 사용자는 또한 인접하지 않은 형제 노드를 선택할 수 있어야합니다. 나는 기본 선택 모델을 확장하기를 희망했다.JTree 선택 모델을 만들려면 형제 선택 만 허용 하시겠습니까?

간단한 방법이 있나요?

답변

3

TreeSelectionModel (현재 선택 상태가 저장 됨) 및 TreeSelectionListener으로 재생해야하는 것처럼 보입니다. 알고리즘 예는 다음과 같을 수 있습니다. 선택을 변경하면 TreeSelectionListener이 활성 모드가 아닌 경우 해당 모드로 들어갑니다 (이 옵션은 청취자가 선택 사항을 업데이트 할 때 유용하며 미친주기를 원하지 않습니다. 널 원해 ?). 그런 다음 TreeSelectionModel#getSelectionPaths()을 사용하여 선택한 노드를 확인합니다. 이 배열 크기가 1이면 하나의 노드 만 선택되고 모두 OK입니다. 크기가 1보다 큰 경우 노드가 형제임을 보장하기 위해 몇 가지 코드를 작성해야합니다 (예 : TreePath이 마지막 부분을 제외하고 동일 함을 보장)

관련 문제