TransferHandler
.
setDragEnabled(true)
.
The reason is that the empty table (unlike an empty list or
an empty tree) does not occupy any space in the scroll pane.
The JTable
does not automatically stretch to fill the
height of a JScrollPane
's viewport — it only
takes up as much vertical room as needed for the rows that it contains.
So, when you drag over the empty table, you are not actually over the table
and the drop fails.
You can configure the table to allow drop anywhere in the view port
by calling
JTable.setFillsViewportHeight(boolean)
. The default for this property is false to ensure backwards compatibility.
The following example, FillViewportHeightDemo
, allows you
to experiment with dropping onto an empty table. The demo contains
an empty table with five columns that has its drop mode set to
insert rows and a drag source that provides five comma-delimited
values that autoincrement.
FillViewportHeightDemo
using
Java™ Web Start (download JDK 6).
Alternatively, to compile and run the example yourself,
consult the
example index.
You can examine the source for
, but the primary point to remember is that you should
generally invoke FillViewportHeightDemo.java
setFillsViewportHeight(true)
on any
table that will accept dropped data.