空表滴

拖放到空表中是一个独特的挑战。遵循正确的步骤时:

  • 创建空表。

  • 创建并附加TransferHandler

  • 通过调用setDragEnabled(true)启用数据传输。

  • 创建滚动窗格并将表添加到滚动窗格。

您运行该应用程序,然后try将有效数据拖到表中,但它拒绝该删除。是什么赋予了?

原因是空表(与空列表或空树不同)不占用滚动窗格中的任何空间。 JTable不会自动拉伸以填充JScrollPane视口的高度-它仅占用其包含的行所需的垂直空间。因此,当您将鼠标悬停在空表上时,实际上并没有在表上,并且放置失败。

您可以通过调用JTable.setFillsViewportHeight(boolean)将该表配置为允许放置在视图端口中的任何位置。此属性的默认值为 false,以确保向后兼容。

以下示例FillViewportHeightDemo允许您try拖放到空表上。该演示包含一个空表,该表有五列,其拖放 Pattern 设置为插入行,拖动源提供五个以逗号分隔的值,这些值会自动递增。

FillViewportHeightDemo 的快照。

Try this:

  • 单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行FillViewportHeightDemo。另外,要自己编译和运行示例,请查阅example index

  • 从标有“从此处拖动”的文本字段拖动到表格。

  • 放到桌子上。丢弃被拒绝。

  • Double 击拖动源。它将当前值(0、0、0、0、0)存储到表中,并在文本字段中增加值。

  • 再次从文本字段拖动到表格。您可以在该行的上方或下方插入内容,但不能插入其下方的区域中。

  • 从“选项”菜单中,选择“填充视口高度”以启用“ fillsViewportHeight”属性。

  • 在选项菜单上,选择“重置”以清空表格。

  • 从文本组件拖动到表格。您现在可以将其放在查看端口上的任何位置,并将数据插入第 0 行。

您可以检查FillViewportHeightDemo.java的源,但是要记住的主要要点是,通常应该在将接受删除的数据的任何表上调用setFillsViewportHeight(true)