文档

Java™教程
隐藏目录
空表拖放
路径: 使用Swing创建GUI
课程: 拖放和数据传输

空表拖放

将数据拖放到空表中是一个独特的挑战。遵循以下正确的步骤:

你运行应用程序并尝试将有效数据拖放到表格中,但它拒绝了拖放。为什么会这样呢?

原因是空表(与空列表或空树不同)在滚动窗格中不占据任何空间。JTable不会自动拉伸以填充JScrollPane视口的高度 - 它只会占用所需的行的垂直空间。因此,当你拖动到空表上时,你实际上并没有在表格上方,所以拖放失败。

你可以通过调用JTable.setFillsViewportHeight(boolean)来配置表格以允许在视口中的任何位置进行拖放。此属性的默认值为false,以确保向后兼容性。

以下示例FillViewportHeightDemo允许你尝试拖放到空表中。该示例包含一个有五列的空表,其拖放模式设置为插入行,并且拖动源提供五个逗号分隔的自动递增值。

FillViewportHeightDemo的快照。

试一试: 
  1. 点击“启动”按钮以使用Java™ Web Start运行FillViewportHeightDemo下载JDK 7或更高版本)。或者,要自己编译和运行示例,请查阅示例索引启动FillViewportHeightDemo示例
  2. 从标有“从这里拖动”的文本字段拖动到表格中。
  3. 拖放到表格中。拖放被拒绝。
  4. 双击拖动源。它将当前值(0, 0, 0, 0, 0)放入表格并递增文本字段中的值。
  5. 再次从文本字段拖动到表格中。你可以在行的上方或下方插入,但不能在下方的区域中插入。
  6. 从“选项”菜单中选择“填充视口高度”以启用“fillsViewportHeight”属性。
  7. 从“选项”菜单中选择“重置”以清空表格。
  8. 从文本组件拖动到表格中。现在你可以在视口中的任何位置放置数据,并将其插入到第0行。

你可以查看FillViewportHeightDemo.java的源代码,但要记住的主要观点是,通常应在接受拖放数据的任何表格上调用setFillsViewportHeight(true)


上一页: 演示 - 位置敏感演示
下一页: 拖放位置渲染