내 모델이 뒷받침하는 Sun의 예제 JTreeTable
을 약간 수정 한 버전을 사용하고 있습니다. 세 번째 예가 될 것입니다 (북마크 하나는 http://java.sun.com/products/jfc/tsc/articles/bookmarks/).JTreeTable DnD 깜박임 드롭 커서가 깜박임
끌어서 놓기 지원을 제외한 모든 기능이 예상대로 작동합니다. 나는 JTree
이 제공하는 것과 비슷한 DDN을 원했다. JTreeTable
은 확장 된 JTable
이므로 JTreeTable
(경로가없고 자식 색인이 없음)의 트리 렌더링 된 열에 물건을 떨어 뜨릴 때 충분한 정보를 제공하지 않는 놓기 위치를 결정하기 위해 JTable.DropLocation
클래스를 제공합니다. 나는 이미 JTable
과 JTree
버전의 조합을 기반으로하는 맞춤형 DropLocation
클래스를 만들어 해결했습니다. 또한이 새로운 정보를 사용자에게 보여주기 위해 JTreeTable
구현에 의해 제공되는 TreeTableCellRenderer
클래스의 페인트 메소드를 수정했습니다 (이제는 새 노드가 선택된 노드의 앞이나 뒤에 배치되는지 확인할 수 있음). 나무 열 안쪽에 있으면 JTree
에서 예상 한대로).
한 가지 문제가 있습니다. 드롭 위치가 트리 열 내에 렌더링 될 때 마우스 커서가 미쳐 버립니다. 나타나는 후 몇 밀리 세컨드 후에 사라지거나 드래그 커서가 보이지 않을 정도로 빨라집니다. 이것은 수정되지 않은 Sun의 예에서도 마찬가지입니다. 나는 왜 이것이 일어나고 있는지에 관해서는 완전히 어둠 속에있다. http://www.java.net/node/663106에서 같은 문제가있는 다른 사람을 찾았지만 제공된 솔루션에서 해당 구성 요소의 놓기 위치를 null로 설정 한 것으로 보이며 더 이상 JTreeTable.getDropLocation()
메서드를 사용하여 검색 할 수 없습니다. 내 수정 된 DropLocation
로 변환하고 다음을 기반으로 물건을 페인트이 필요합니다. 필자는 유스 케이스의 적절한 솔루션에 너무 가까워서 맛볼 수 있습니다. 이 커서 깜박 거리는 것은 내 방식에서 유일한 장애물입니다. 어떤 아이디어?
Java 1.6을 사용 중입니다.
PS : 나는 JTable.DropLocation
문제로 고통되는 모두 표시하기 때문에 (넷빈즈 개요 또는 JXTreeTable
같은) 기존의 구성 요소 중 하나에 대한 사용자 지정 JTreeTable
하지에 대한 결정했습니다 및 이전 또는 이후에 삭제에 대한 지원을 제공하지 않습니다 선택된 트리 노드 (내부 노드). 이러한 기능을 제공하는 구성 요소에 대해 알고 있다면 기쁜 마음으로 들어 볼 수 있습니다.
이 질문의 포스트 scriptum에서 내가 부당하게 이전 또는 선택 트리 노드 후 하락 지원할 수 없다는'org.netbeans.swing.Outline'와'JXTreeTable' 비난 . 이러한 구성 요소가 실제로이를 지원하기 때문에 사실이 아닙니다. 이것들은 모두 JTable을 간접적으로 서브 클래스 화합니다. 'JTable.DropLocation'는 패스 정보를 제공하지 않는 것이 사실이지만, 테이블 정보와 함께 제공되는 테이블 행과 컬럼을 통해 얻을 수 있습니다. 내가 이것을 알았 더라면, 나는 내 자신의 구성 요소를 굴리는 것을 결코 괴롭히지 않았을 것이다. 나는 그것을 반대한다. – predi