模块 java.desktop

类 TransferHandler.TransferSupport

java.lang.Object
javax.swing.TransferHandler.TransferSupport
封闭类:
TransferHandler

public static final class TransferHandler.TransferSupport extends Object
此类封装了剪贴板或拖放传输的所有相关细节,还允许自定义拖放体验的各个方面。

此类的主要目的是提供开发人员确定传输的适用性或导入其中包含的数据所需的信息。但它也兼作控制器,用于在拖放过程中自定义属性,例如是否显示放置位置以及使用哪个放置操作。

开发人员通常不需要创建此类的实例。相反,它们是由 DnD 实现提供给 TransferHandler 中某些方法的东西。

自从:
1.6
参见:
  • 构造方法详细信息

    • TransferSupport

      public TransferSupport(Component  component, Transferable  transferable)
      为给定组件和 Transferable 创建一个带有 isDrop() falseTransferSupport
      参数:
      component - 目标组件
      transferable - 可转让
      抛出:
      NullPointerException - 如果任一参数为 null
  • 方法详情

    • isDrop

      public boolean isDrop()
      返回此 TransferSupport 是否表示删除操作。
      返回:
      true 如果这是删除操作,false 否则。
    • getComponent

      public Component  getComponent()
      返回此传输的目标组件。
      返回:
      目标组件
    • getDropLocation

      public TransferHandler.DropLocation  getDropLocation()
      当此 TransferSupport 表示放置时,返回组件的当前(非 null )放置位置。

      注意:对于具有内置拖放支持的组件,此位置将是该组件的 getDropLocation 方法返回的相同类型的 DropLocation 的子类。

      此方法仅适用于拖放传输。当 isDrop()false 时调用它会导致 IllegalStateException

      返回:
      下降位置
      抛出:
      IllegalStateException - 如果这不是掉落物
      参见:
    • setShowDropLocation

      public void setShowDropLocation(boolean showDropLocation)
      设置是否应在视觉上指示传输的放置位置 - 这必须代表放置。这适用于那些在拖放操作期间适当时自动显示放置位置的组件。默认情况下,仅当 TransferHandler 表示它可以接受此 TransferSupport 表示的导入时,才会显示放置位置。使用此方法,您可以强制放置位置始终显示或始终不显示。

      此方法仅适用于拖放传输。当 isDrop()false 时调用它会导致 IllegalStateException

      参数:
      showDropLocation - 是否指示放置位置
      抛出:
      IllegalStateException - 如果这不是掉落物
      参见:
    • setDropAction

      public void setDropAction(int dropAction)
      将传输的放置操作(必须代表放置)设置为给定操作,而不是默认的用户放置操作。该操作必须由源的放置操作支持,并且必须是 COPYMOVELINK 之一。

      此方法仅适用于拖放传输。当 isDrop()false 时调用它会导致 IllegalStateException

      参数:
      dropAction - 放下动作
      抛出:
      IllegalStateException - 如果这不是掉落物
      IllegalArgumentException - 如果指定了无效操作
      参见:
    • getDropAction

      public int getDropAction()
      当此 TransferSupport 表示放置时,返回为放置选择的操作。

      除非通过 setDropAction 明确选择,否则这将返回 getUserDropAction 提供的用户删除操作。

      您可能希望在 TransferHandlerimportData 方法中对此进行查询,以根据操作自定义处理。

      此方法仅适用于拖放传输。当 isDrop()false 时调用它会导致 IllegalStateException

      返回:
      为 drop 选择的动作
      抛出:
      IllegalStateException - 如果这不是掉落物
      参见:
    • getUserDropAction

      public int getUserDropAction()
      当此 TransferSupport 表示放置时,返回用户放置操作。

      DropTargetDragEvent DropTargetDropEvent 的文档中所述,为放置选择了用户放置操作。可以通过 setDropAction 方法选择不同的动作作为放置动作。

      在确定放置的适用性或决定要明确选择的放置操作时,您可能希望在 TransferHandlercanImport 方法中查询此信息。

      此方法仅适用于拖放传输。当 isDrop()false 时调用它会导致 IllegalStateException

      返回:
      用户放下动作
      抛出:
      IllegalStateException - 如果这不是掉落物
      参见:
    • getSourceDropActions

      public int getSourceDropActions()
      当此 TransferSupport 表示放置时,返回拖动源支持的放置操作。

      源动作表示此传输源支持的动作集,并表示为 COPYMOVELINK 的某种按位或组合。在确定放置的适用性或决定要明确选择的放置操作时,您可能希望在 TransferHandlercanImport 方法中查询此信息。要确定源是否支持特定操作,请将该操作与源放置操作按位与,然后将结果与原始操作进行比较。例如:

       boolean copySupported = (COPY & getSourceDropActions()) == COPY;
       

      此方法仅适用于拖放传输。当 isDrop()false 时调用它会导致 IllegalStateException

      返回:
      拖动源支持的拖放操作
      抛出:
      IllegalStateException - 如果这不是掉落物
      参见:
    • getDataFlavors

      public DataFlavor [] getDataFlavors()
      返回此传输的数据类型。
      返回:
      此传输的数据类型
    • isDataFlavorSupported

      public boolean isDataFlavorSupported(DataFlavor  df)
      返回是否支持给定的数据风格。
      参数:
      df - 要测试的 DataFlavor
      返回:
      是否支持给定的口味。
    • getTransferable

      public Transferable  getTransferable()
      返回与此传输关联的 Transferable

      注意:除非需要直接获取Transferable,否则请使用此类的其他方法之一来查询传输。这可能比获取 Transferable 并直接询问它更好。

      返回:
      与此传输关联的 Transferable