swing jtree 예제

리프, 확장 분기 또는 축소된 분기 노드에 사용되는 기본 아이콘을 쉽게 변경할 수 있습니다. 이렇게 하려면 먼저 DefaultTreeCellRenderer의 인스턴스를 만듭니다. 언제든지 원하는 구성 요소를 다시 사용하여 처음부터 고유한 TreeCellRenderer 구현을 만들 수 있습니다. 다음으로 렌더러에서 다음 방법 중 하나 이상을 호출하여 사용할 아이콘을 지정합니다: setLeafIcon(리프 노드용), setOpenIcon(확장된 분기 노드의 경우), setClosedIcon(축소된 분기 노드의 경우). 트리에 노드 유형에 대한 아이콘이 표시되지 않으려면 아이콘에 대해 null을 지정합니다. 아이콘을 설정한 후에는 트리의 setCellRenderer 메서드를 사용하여 DefaultTreeCellRenderer가 해당 노드를 페인트하도록 지정합니다. 다음은 TreeIconDemo.java에서 가져온 예제입니다: 트리의 모델을 명시적으로 만들면 코드는 트리의 모델이 DefaultTreeModel의 인스턴스임을 보장합니다. 이렇게 하면 트리 모델이 지원하는 모든 메서드를 알 수 있습니다. 예를 들어, 우리는 우리가 모델의 insertNodeInto 메서드를 호출할 수 있습니다 알고, 비록 그 메서드는 TreeModel 인터페이스에 의해 요구 되지 않습니다. 셀 렌더러가 어떻게 작동하는지 궁금할 수 있습니다. 트리가 각 노드를 페인트할 때 JTree나 해당 모양 및 느낌 별 구현에는 실제로 노드를 그리는 코드가 포함되어 있지 않습니다. 대신 트리는 셀 렌더러의 페인팅 코드를 사용하여 노드를 페인팅합니다.

예를 들어 „Java 프로그래밍 언어”문자열이 있는 리프 노드를 페인트하려면 트리에서 해당 문자열로 리프 노드를 페인트할 수 있는 구성 요소를 반환하도록 셀 렌더러에 요청합니다. 셀 렌더러가 DefaultTreeCellRenderer인 경우 기본 리프 아이콘뒤에 문자열을 그리는 레이블을 반환합니다. 나머지 클래스는 마지막 예제의 클래스와 동일합니다. 이 문서에서는 JTree작업에 대해 설명하고 몇 가지 예제를 보여 드리겠습니다. 이렇게 하는 것은 매우 간단합니다. 다른 많은 스윙 구성 요소와 마찬가지로 JScrollPane 내에서 트리를 래핑하고 프레임에 추가하기만 하면 됩니다. 프레임에 트리를 추가하는 대신 스크롤 창을 추가합니다: 예를 들어 이전 코드 스니펫에 사용된 BookInfo 클래스는 책 이름과 책을 설명하는 HTML 파일의 URL이라는 두 가지 데이터를 포함하는 사용자 지정 클래스입니다. toString 메서드는 책 이름을 반환 하기 위해 구현 됩니다.