title: JTable - drag and drop
body: <p>OK, this problem is out of my league. I'm trying to implement a GUI widget in swing that allows files to be dropped onto a JTable, and allows the rows of the JTable to be dragged for re-sorting. Think VLC's playlists or the one in iTunes.</p>
  
  <p>I got dropping files from the OS (Explorer, Finder, etc.) working just fine, but I'm having an impossible time with re-arranging the rows of the table, once the files are in. The problem is that when I add a custom TransferHandler to the table, dragging <em>from</em> the table is instantly killed. Here is some example code:</p>
  
  <pre><code>import javax.swing.*;
  
  public class TableTest
  {
      public static void main (String [] argv)
      {
          // setup table data
          String [] columns = new String [] {"Foo", "Bar", "Baz", "Quux"};
          String [][] data = new String [][] {{"A", "B", "C", "D"},
                          {"1", "2", "3", "4"},
                          {"i", "ii", "iii", "iv"}};
          // create table
          JTable table = new JTable(data, columns);
  
          // set up drag and drop
          table.setDragEnabled(true);
          table.setDropMode(DropMode.INSERT_ROWS);
          table.setFillsViewportHeight(true);
          TransferHandler dnd = new TransferHandler() {
              // here be code to handle drops, and one would
              // presume drag exporting, too
          };
          table.setTransferHandler(dnd);
          JScrollPane scroll = new JScrollPane(table);
  
          // create and show window
          JFrame window = new JFrame();
          window.getContentPane().add(scroll);
          window.pack();
          window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          window.setVisible(true);
      }
  }
  </code></pre>
  
  <p>Run this code as-is and you'll see that you cannot initiate a drag on the table.If you comment out the call to setTransferHandler() on the table, dragging works (i.e., when I start dragging a table row, I get the X'd out circle cursor saying I can't drop there). But as soon as a TransferHandler is set for the table, I can't drag any rows. The problem has to be in the TransferHandler, but I've thoroughly troubleshot and debugged it, and have determined that dragging is never started once there is a TransferHandler on the table. What am I doing wrong?</p>