2012-09-19 3 views
4

나는 JTable + JScrollPane + DefaultTableModel을 사용하고 있습니다.드래그 앤 드롭 JTableHeader

JTableHeader에 드래그 앤 드롭을 구현해야합니다. 열 머리글을 구성 요소로 드래그하고 끌어온 열에 따라 일부 작업을 수행하려고합니다.

JTableHeadersetTransferHandler()을 시도했지만 드래그가 여전히 작동하지 않습니다.

어디에서 시작할 수 있습니까? JTableHeader에 DnD를 구현하고 "이동 열"기능을 저장할 수 있습니까 (JTable에 'out-of-the-box'가능)?

+1

"작동하지 않음"을 지정하십시오 : 끌기 (열 이동이 아니라)를 시작할 수없고, 열을 이동할 수 있지만 구성 요소에 놓을 수는 없지만 끌어서 놓을 수는 있지만 드롭이 예상 한대로 작동하지 않습니다 , ... – Robin

+0

열을 재정렬 할 수는 있지만 드래그를 시작할 수 없습니다 (커서가 변경되지 않음, 마우스 단추 릴리스에서 구성 요소의 놓기 메소드가 실행되지 않음) – Afel

+0

답변을 업데이트로 간주 할 수 있습니다 귀하의 질문에 (그리고 그것을 받아들이십시오), "해결 된"신호로 미래의 사용자를 쉽게 찾을 수 있습니다 :-) – kleopatra

답변

3

SOLVED : 질문이 닫혔습니다. 나는 dnd를 사용하여 구현했습니다.

DragSource.getDefaultDragSource().createDefaultDragGestureRecognizer(tableHeader, ...) 

dnd는 기본 '재 배열 열'동작을 중단시킵니다. 제 해결 방법은

public void dragGestureRecognized(DragGestureEvent dge) { 
     if (dge.getDragAction() == DnDConstants.ACTION_COPY) 
      return; 
     try { 
      dge.startDrag(null, new MyTransferable()); 
     } catch (InvalidDnDOperationException e2) { 
      System.out.println(e2); 
     } 
    } 

입니다. 따라서 Ctrl 키를 누른 상태에서 열을 다시 정렬 할 수 있습니다. 나에게 충분하다.