TransferHandler Class
数据传输机制的核心是TransferHandler类。顾名思义,TransferHandler
为与JComponent
之间的数据传输提供了一种简便的机制-所有详细信息都包含在此类及其支持类中。大多数组件都提供了默认的传输处理程序。您可以在任何组件上创建并安装自己的传输处理程序。
有三种方法可将TransferHandler
接合到组件上:
-
setDragEnabled(boolean) —打开拖动支持。 (默认值为 false.)在支持拖动手势的每个组件上定义此方法;否则,此方法为 false。该链接会将您带到
JList
的文档。 -
setDropMode(DropMode) —配置如何确定放置位置。该方法是针对
JList
,JTable
和JTree
定义的;该链接会将您带到JList
的文档。 -
setTransferHandler(TransferHandler) —用于插入自定义数据导入和导出。此方法在
JComponent
上定义,因此每个 Swing 组件都继承该方法。
如前所述,默认的 Swing 传输处理程序(如文本组件和颜色 selectors 所使用的处理程序)提供了被认为对数据导入和导出最有用的支持。但是,列表,表和树默认情况下不支持 drop。这样做的原因是,没有通用的方法来处理这些组件上的丢失。例如,放在JTree
的特定节点上意味着什么?它是替换该节点,在其下方插入还是作为该节点的子节点插入?另外,我们不知道树的背后是哪种类型的模型-它可能不是可变的。
虽然 Swing 不能为这些组件提供默认实现,但存在 drop 框架。您只需要提供一个自定义TransferHandler
即可 管理 实际的数据导入。
Note:
如果将自定义TransferHandler
安装到 Swing 组件上,则将替换默认支持。例如,如果将JTextField
的TransferHandler
替换为仅处理颜色的_3,则将禁用其支持文本导入和导出的功能。
如果必须替换默认的TransferHandler
(例如,处理文本的默认值),则需要重新实现文本的导入和导出功能。它不需要像 Swing 提供的功能那样广泛—它可以像支持StringFlavor
数据风格一样简单,具体取决于应用程序的需求。
接下来,我们展示实现数据导出所需的TransferHandler
方法。