Module java.desktop
Package javax.swing

Class TransferHandler.TransferSupport

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

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

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

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

自JDK版本:
1.6
参见:
  • Constructor Details

    • TransferSupport

      public TransferSupport(Component component, Transferable transferable)
      使用给定组件和Transferable创建一个具有isDrop()falseTransferSupport
      参数:
      component - 目标组件
      transferable - 可传输对象
      抛出:
      NullPointerException - 如果任一参数为null
  • Method Details

    • 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

      返回:
      选择的放置操作
      抛出:
      IllegalStateException - 如果不是放置操作
      参见:
    • getUserDropAction

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

      用户放置操作是根据DropTargetDragEventDropTargetDropEvent的文档描述为放置选择的操作。可以通过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()
      返回此传输的数据flavors。
      返回:
      此传输的数据flavors
    • isDataFlavorSupported

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

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

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

      返回:
      与此传输相关联的Transferable