2012-09-19 106 views
4

我使用JTable + JScrollPane + DefaultTableModelDrag-n-Drop JTableHeader

我需要實現Drag-n-Drop JTableHeader。我想拖動列標題到我的組件,並根據拖動的列做一些工作。

我試過setTransferHandler()對我的JTableHeader,但拖動仍然無法正常工作。

我可以從哪裏開始?是否可以在JTableHeader上實施DnD並保存「移動列」功能(JTable中可用的「開箱即用」功能)?

+1

指定「不工作」:您無法啓動拖動(甚至不能移動列),您可以移動列但不拖動組件,您可以拖放,但拖放沒有達到您的預期效果,... – Robin

+0

我可以重新排列列但我不能啓動拖動(光標不變,鼠標按鈕釋放時我的組件的拖放方法不會觸發) – Afel

+0

您可能會考慮將您的更新作爲答案到你的問題(並接受它),更容易找到信號「解決」的未來用戶:-) – kleopatra

回答

3

已解決:問題已關閉。 DND符默認的「重排列的行爲:我DND使用

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

一兩件事要提的實現。我的解決方法是

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-pressed重新排列列。這對我來說已經足夠了。

相關問題