TransferHandler Class

数据传输机制的核心是TransferHandler类。顾名思义,TransferHandler为与JComponent之间的数据传输提供了一种简便的机制-所有详细信息都包含在此类及其支持类中。大多数组件都提供了默认的传输处理程序。您可以在任何组件上创建并安装自己的传输处理程序。

有三种方法可将TransferHandler接合到组件上:

  • setDragEnabled(boolean) —打开拖动支持。 (默认值为 false.)在支持拖动手势的每个组件上定义此方法;否则,此方法为 false。该链接会将您带到JList的文档。

  • setDropMode(DropMode) —配置如何确定放置位置。该方法是针对JListJTableJTree定义的;该链接会将您带到JList的文档。

  • setTransferHandler(TransferHandler) —用于插入自定义数据导入和导出。此方法在JComponent上定义,因此每个 Swing 组件都继承该方法。

如前所述,默认的 Swing 传输处理程序(如文本组件和颜色 selectors 所使用的处理程序)提供了被认为对数据导入和导出最有用的支持。但是,列表,表和树默认情况下不支持 drop。这样做的原因是,没有通用的方法来处理这些组件上的丢失。例如,放在JTree的特定节点上意味着什么?它是替换该节点,在其下方插入还是作为该节点的子节点插入?另外,我们不知道树的背后是哪种类型的模型-它可能不是可变的。

虽然 Swing 不能为这些组件提供默认实现,但存在 drop 框架。您只需要提供一个自定义TransferHandler即可 管理 实际的数据导入。

Note:

如果将自定义TransferHandler安装到 Swing 组件上,则将替换默认支持。例如,如果将JTextFieldTransferHandler替换为仅处理颜色的_3,则将禁用其支持文本导入和导出的功能。

如果必须替换默认的TransferHandler(例如,处理文本的默认值),则需要重新实现文本的导入和导出功能。它不需要像 Swing 提供的功能那样广泛—它可以像支持StringFlavor数据风格一样简单,具体取决于应用程序的需求。

接下来,我们展示实现数据导出所需的TransferHandler方法。