javax.swing

接口
异常
java.lang.Object
  继承者 javax.swing.TransferHandler.TransferSupport
正在封闭类:
TransferHandler

public static final class TransferHandler.TransferSupport
     
extends Object

此类封装剪贴板或拖放传输的所有相关详细信息,并且还允许自定义拖放过程的各方面。

此类的主要目的是提供开发人员需要的信息,以便确定传输的适合性或者导入传输中包含的数据。但它同时又是一个控制器,可自定义拖放过程中的属性,比如是否显示放置位置,使用哪种放置动作等。

开发人员通常不需要创建此类的实例。它们是 DnD 实现向 TransferHandler 中的某些方法提供的。

从以下版本开始:
1.6
另请参见:
TransferHandler.canImport(TransferHandler.TransferSupport), TransferHandler.importData(TransferHandler.TransferSupport)

构造方法摘要
TransferHandler.TransferSupport(Component component, Transferable transferable)
          使用给定组件和 Transferable 创建一个 TransferSupport,对于该 TransferSupport isDrop() 返回 false
 
方法摘要
 Component getComponent()
          返回此传输的目标组件。
 DataFlavor[] getDataFlavors()
          返回此传输的数据 flavor。
 int getDropAction()
          当此 TransferSupport 表示放置操作时,返回为其选择的动作。
 TransferHandler.DropLocation getDropLocation()
          此 TransferSupport 表示一个放置操作时,返回组件的当前放置位置(非 null)。
 int getSourceDropActions()
          当此 TransferSupport 表示放置操作时,返回拖动源受支持的放置动作。
 Transferable getTransferable()
          返回与此传输关联的 Transferable
 int getUserDropAction()
          当此 TransferSupport 表示一个放置操作时,返回其用户放置动作。
 boolean isDataFlavorSupported(DataFlavor df)
          返回是否支持给定的数据 flavor。
 boolean isDrop()
          返回此 TransferSupport 是否表示一个放置操作。
 void setDropAction(int dropAction)
          将传输(必须表示一个放置操作)的放置动作设置为给定动作,而不是默认的用户放置动作。
 void setShowDropLocation(boolean showDropLocation)
          设置是否应该为传输(必须表示一个放置操作)可视地指出放置位置。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

TransferHandler.TransferSupport

public TransferHandler.TransferSupport(Component component,
                                       Transferable transferable)
使用给定组件和 Transferable 创建一个 TransferSupport,对于该 TransferSupport isDrop() 返回 false

参数:
component - 目标组件
transferable - transferable
抛出:
NullPointerException - 如果任一参数为 null
方法详细信息

isDrop

public boolean isDrop()
返回此 TransferSupport 是否表示一个放置操作。

返回:
如果这是一个放置操作,则返回 true;否则返回 false

getComponent

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

返回:
目标组件

getDropLocation

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

注:对于带内置放置操作支持的组件,此位置将是一个 DropLocation 的子类,该 DropLocation 的类型与该组件的 getDropLocation 方法返回的相同。

此方法只用于拖放传输。isDrop()false 时调用此方法将导致 IllegalStateException

返回:
放置位置
抛出:
IllegalStateException - 如果此 TransferSupport 不是一个放置操作
另请参见:
isDrop

setShowDropLocation

public void setShowDropLocation(boolean showDropLocation)
设置是否应该为传输(必须表示一个放置操作)可视地指出放置位置。此方法用于那些在拖放操作过程的适当时候能够自动显示放置位置的组件。默认情况下,只有在 TransferHandler 已声明它能够接受此 TransferSupport 表示的导入时才显示放置位置。使用此方法,可以将放置位置强制改为总是显示,或总是不显示。

此方法只用于拖放传输。isDrop()false 时调用此方法将导致 IllegalStateException

参数:
showDropLocation - 是否指示放置位置
抛出:
IllegalStateException - 如果此 TransferSupport 不是一个放置操作
另请参见:
isDrop

setDropAction

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

此方法只用于拖放传输。isDrop()false 时调用此方法将导致 IllegalStateException

参数:
dropAction - 放置动作
抛出:
IllegalStateException - 如果此 TransferSupport 不是一个放置操作
IllegalArgumentException - 如果指定了无效的动作
另请参见:
getDropAction(), getUserDropAction(), getSourceDropActions(), isDrop

getDropAction

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

除非通过 setDropAction 显式地选择,否则此方法返回 getUserDropAction 提供的用户放置动作。

可以使用 TransferHandlerimportData 方法查询此动作,以便根据该动作自定义处理方法。

此方法只用于拖放传输。isDrop()false 时调用此方法将导致 IllegalStateException

返回:
为放置操作选择的动作 throws IllegalStateException 如果此 TransferSupport 不是一个放置操作
另请参见:
setDropAction(int), getUserDropAction(), isDrop

getUserDropAction

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

根据 DropTargetDragEventDropTargetDropEvent 文档中的描述,为放置操作选择用户放置动作。通过 setDropAction 方法,可以选择不同的动作作为放置动作。

当要确定放置操作的适合性或者对显式地选择放置动作作决定的时候,可以使用 TransferHandlercanImport 方法查询此动作。

此方法只用于拖放传输。isDrop()false 时调用此方法将导致 IllegalStateException

返回:
用户放置动作
抛出:
IllegalStateException - 如果此 TransferSupport 不是一个放置操作
另请参见:
setDropAction(int), getDropAction(), isDrop

getSourceDropActions

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

源动作表示此传输的源所支持的动作集合,并表示为 COPYMOVELINK 的某个按位或组合。当要确定放置操作的适合性或者对显式地选择放置动作作决定的时候,可以使用 TransferHandlercanImport 方法查询此动作。要确定源是否支持指定动作,可以将该动作与源放置动作进行按位加,然后将结果与初始动作进行比较。例如:

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

此方法只用于拖放传输。isDrop()false 时调用此方法将导致 IllegalStateException

返回:
拖动源受支持的放置动作
抛出:
IllegalStateException - 如果此 TransferSupport 不是一个放置操作
另请参见:
isDrop

getDataFlavors

public DataFlavor[] getDataFlavors()
返回此传输的数据 flavor。

返回:
此传输的数据 flavor

isDataFlavorSupported

public boolean isDataFlavorSupported(DataFlavor df)
返回是否支持给定的数据 flavor。

参数:
df - 要测试的 DataFlavor
返回:
是否支持给定的 flavor。

getTransferable

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

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

返回:
与此传输关联的 Transferable