質問: dragSource.createDefaultDragGestureRecognizer( this, DnDConstants.ACTION_COPY, this); } // データの中身をTransferインターフェースを介して渡す。 public Object getTransferData(DataFlavor flavor) { return "hoge"; } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] {DataFlavor.stringFlavor}; // 今のところ文字列だけ } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(DataFlavor.stringFlavor); } // ドラッグのジェスチャが認識された。 public void dragGestureRecognized(DragGestureEvent e) { System.out.println("From.dragGestureRecognized()\n "+e); // Copy/Moveのアクションならドラッグを開始する if((e.getDragAction()|DnDConstants.ACTION_COPY_OR_MOVE)!=0) { e.startDrag(DragSource.DefaultCopyDrop, this, null); } } }
回答: 環境が明記されていませんが、「Shiftキーを押しながらセルを選択した」場合と「Ctrlキーで複数選択した場合」の差異ですが、選択モデルのリード、アンカー、変更される選択範囲が異なります。 ただし処理するメソッドに差異はありません。キーボード操作、マウス操作による選択変更は、最終的にJTable#changeSelection()が呼び出されます。 詳細はソースを読んでください。