2013-03-12 3 views
0

JTree는 SelectionListener 및 ExpansionListener를 제공합니다. 그러나 노드를 확장 할 때 (+/- 아이콘 클릭) 볼 수있는 한 선택 이벤트도 발생합니다. 1) 확장 아이콘을 클릭하면 확장 +1 이벤트에 대한 선택 항목 2) 노드 자체를 클릭하면 선택 항목 1 개만 표시됩니다.JTree 노드가 확장되었지만 선택되지 않았 음을 알 수있는 방법

사용자가 노드를 확장 할 때 선택 이벤트가 발생합니까?

또는 ... 어떻게 확장을 감지 할 수 있습니까 (선택 없음)? 노드가 실제로 선택되고 확장시에만 아무 작업도 수행하지 않는 경우에만 시간이 많이 걸리는 작업을 실행하고 싶습니다 (GUI에서 노드를 확장 한 경우는 제외). 아이디어가 있습니까? 감사합니다.

+1

마지막 단락 자체가 모순으로 들립니다. _expension 만 - 실제로 선택하면 시간이 오래 걸리는 작업 _ 명확히하십시오. – kleopatra

+0

내가 찾는 것은 사용자가 노드를 확장 할 때 (내가 트리에서 노드를 확장 할 때) 아무 것도 할 수 없도록하고, 사용자가 노드를 선택할 때만 GUI의 다른 부분을 업데이트 할 수 있도록하는 방법입니다. 나무. – DaveG

+0

내 앱에 여러 개의 트리가 포함되어 있습니다. 트리에서 노드를 클릭하면 앱이 DB에서 데이터를 검색하고, 물건을 계산하고, 그래픽을 생성하는 등의 작업을 수행합니다. 심지어 폴더는 이와 같은 정보와 관련이 있습니다. 문제는 다음과 같습니다. 데이터를 가져와야하는 다른 노드에 액세스하기 위해 10 개의 폴더 노드를 확장해야하는 경우 먼저 모든 10 개의 상위 폴더에서 데이터를 가져 오지 않으려합니다. – DaveG

답변

1

How to Write a Tree-Will-Expand Listener과 같이 TreeExpansionEvent을 가로 채기 위해 TreeWillExpandListener 인터페이스를 구현할 수 있습니다. TreeExpandEventDemo2이 그 예입니다.

+0

고마워,하지만이 선택 이벤트를 발사에서 막을 것이라고 생각하지 않아요? 내 응용 프로그램에서 노드를 선택하면 많은 정보가 DB에서 검색되고 수치가 계산됩니다. 이 작업에는 많은 시간 (2 초 이상)이 소요됩니다. 내가 필요로하는 것은 사용자가 5 개의 노드 정보를 업데이트하지 않고도 완전한 지사 (많은 노드)를 확장 할 수 있어야한다는 것입니다. 저에게 가장 좋은 점은 + 아이콘을 클릭하여 노드를 확장했을 때입니다. 노드 자체를 클릭) 선택 이벤트가 발생하지 않습니다. – DaveG

+0

'TreeExpandEventDemo2'는 나를 위해 일했습니다. 이 [예제] (http://codereview.stackexchange.com/q/4446/6692)는 SwingWorker를 사용하여 모델을 다시 채 웁니다. – trashgod

+0

고마워! 이 예제는 매우 흥미로 우며 앞으로 이와 같은 loazy 로딩 메커니즘을 구현할 것입니다. 하지만 지금은이게 내 간단한 질문에 대답하지 않습니다. 내 트리는 100 %로드되고 모든 하위 트리는 이미 트리에로드됩니다. 그냥 트리의 + 아이콘을 통해 열리는 노드를 처리하지 않도록 선택 영역을 확장하려고합니다 ... – DaveG