Посмотрите пожалуйста, что я не так сделал? Drag&Drop не хочет работать
| Код | public class DNDTable extends JTable implements DropTargetListener, DragSourceListener, DragGestureListener { //private DropTarget dropTarget = null; private DragSource dragSource = null;
private int[] selectedRows; private int[] selectedColumns;
protected static Object dndObj;
public DNDTable() { super(new DefaultTableModel()); initComponents(); }
public DNDTable(TableModel dm) { super(dm); }
public DNDTable(final Object[][] rowData, final Object[] columnNames) { super(rowData, columnNames); }
private void initComponents() { //dropTarget = new DropTarget(this, this); dragSource = new DragSource(); dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_MOVE, this); }
public void drop(DropTargetDropEvent event) { Transferable transferable = event.getTransferable(); event.acceptDrop(DnDConstants.ACTION_MOVE); event.getDropTargetContext().dropComplete(true); dragDropFinish(transferable); }
public void dragGestureRecognized(DragGestureEvent event) { selectedRows = getSelectedRows(); selectedColumns = getSelectedColumns();
if (selectedRows.length != 0) { Transferable transfer = dragDropStart();
if (transfer==null) transfer = new StringSelection(selectedRows+"|"+selectedColumns); // as the name suggests, starts the dragging try { dragSource.startDrag(event, DragSource.DefaultCopyDrop, transfer, this); } catch (InvalidDnDOperationException e) { System.err.println(e.getMessage()); } } } public Transferable dragDropStart() { System.out.println("[VLR] DNDTable.dragDropStart() selectedRows="+selectedRows); System.out.println("[VLR] DNDTable.dragDropStart() selectedColumns="+selectedColumns); return null; }
/** override it!*/ public void dragDropFinish(Transferable transfer) { System.out.println("[VLR] DNDTable.dragDropFinish()"); }
public void dragDropEnd(DragSourceDropEvent evt) { return; }
public void dragEnter(DragSourceDragEvent evt) { return; }
public void dragExit(DragSourceEvent evt) { return; }
public void dragOver(DragSourceDragEvent evt) { return; }
public void dropActionChanged(DragSourceDragEvent evt) { return; }
public void dragEnter(DropTargetDragEvent event){ event.acceptDrag (DnDConstants.ACTION_MOVE); } public void dragExit(DropTargetEvent event){} public void dragOver(DropTargetDragEvent event) { } public void dropActionChanged ( DropTargetDragEvent event ){} }
| |