Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及以后版本中更新的语言功能的摘要,请参见Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息,请参见JDK发行说明。
演示 - BasicDnD
现在我们来看一个简单的演示,名为BasicDnD
,它向你展示了免费的功能。从屏幕截图中可以看到,BasicDnD包含一个表格、一个列表、一个树、一个颜色选择器、一个文本区域和一个文本字段。
所有这些组件都是开箱即用的标准组件,除了列表。这个列表已经定制,可以弹出一个对话框,显示接受拖放操作的位置。
以下区域可以接受拖放操作:
- 文本字段
- 文本区域
- 颜色选择器可以接受颜色类型的拖放操作,但要尝试这个功能,你需要运行两个演示程序的副本(或者另一个包含颜色选择器的演示程序)
默认情况下,这些对象都没有启用默认的拖放功能。在启动时,你可以勾选“启用拖放”复选框,查看你可以免费获得的拖放行为。
这个图像已经缩小以适应页面。
点击图像以查看其原始尺寸。
试一试:
- 点击“Launch”按钮,使用Java™ Web Start运行BasicDnD(下载JDK 7或更高版本)。或者,如果要自己编译和运行示例,请参考示例索引。
- 在列表中选择一个项目,并按住鼠标按钮开始拖动。因为列表还没有启用拖放,所以不会发生任何事情。
- 选择“打开拖放”复选框。
- 按住鼠标按钮并开始拖动选定的项目。将文本放回列表中。如果列表实际上接受拖放,对话框将显示文本将出现的位置。(列表的默认行为是显示“不接受数据”光标。)
- 将选定的文本拖放到文本区域上。插入点通过闪烁的光标指示。此外,光标会改变以表示文本区域将接受文本作为副本。
- 释放鼠标并观察文本出现在文本区域中。
- 在文本区域中选择一些文本。
- 当光标位于选定文本上方时,按下鼠标按钮并开始拖动。
- 注意,这次出现了拖动操作的光标。成功将此文本拖放到另一个组件中将导致文本从原始组件中删除。
- 按住Ctrl键并再次在选定文本上按下。开始拖动,此时会出现复制光标。将光标移动到文本区域上并释放。文本出现在新位置,但不会从原始位置删除。Ctrl键可以用来将任何移动操作变为复制操作。
- 从颜色选择器中选择一种颜色。选定的颜色会出现在预览面板中。按住鼠标按钮在预览面板上的颜色上拖动到其他组件上。注意,这些组件都不接受颜色。
- 尝试将文本、颜色甚至文件拖放到列表中。对话框将报告尝试的操作。实际的拖放可以通过在
BasicDnD.java
源文件中取消注释的另外六行代码来实现。
接下来我们将看一下TransferHandler
类,这是拖放机制的核心。