这些Java教程是为JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以了解Java SE 9及后续版本中更新的语言功能的摘要。
请参阅JDK发布说明以获取有关所有JDK发布的新功能、增强功能以及已删除或已弃用选项的信息。
到目前为止,我们主要关注于将TransferHandler
附加到JComponent
子类之一上。但是,您也可以直接在顶层容器(如JFrame
和JDialog
)上设置TransferHandler
。
这对于导入文件的应用程序特别有用,例如编辑器、集成开发环境、图像处理程序、CD刻录程序。这样的应用程序通常包括一个菜单、一个工具栏、一个用于编辑文档的区域,以及一个用于在打开的文档之间切换的列表或机制。
我们有一个这样的示例,但因为此演示程序读取文件,所以我们没有提供Java Web Start版本 - 您将需要自己下载和编译该演示程序。
如下面的屏幕截图所示,TopLevelTransferHandlerDemo
有一个菜单(除了演示子菜单外为空),一个(非功能性的)工具栏,一个(左侧的)区域显示打开文档的列表,以及一个(右侧的)区域显示每个打开文档的内容。在启动时,蓝色文档区域已分配了一个支持文件导入的传输处理程序 - 因此是唯一可以接受拖放的地方。
TopLevelTransferHandlerDemo
示例,如果您想下载一个适用于NetBeans的zip文件结构,请参考示例索引。JDesktopPane
)包含支持导入javaFileListFlavor
的传输处理程序。JFrame
)上。JList
的传输处理程序也不知道如何导入文件。注意:禁用文本组件上的默认传输处理程序会产生一个不希望的副作用:您不能再在编辑区域内拖放(或剪切/复制/粘贴)文本。要解决这个问题,您需要为文本组件实现一个自定义传输处理程序,该处理程序接受文件拖放,并重新实现了缺失的文本传输支持。您可能希望关注RFE 4830695,该请求允许在现有的TransferHandler
之上添加数据导入功能。
这是TopLevelTransferHandlerDemo.java
的源代码: