java.lang.Object javax.swing.TransferHandler.TransferSupport
public static final class TransferHandler.TransferSupport
此类封装剪贴板或拖放传输的所有相关详细信息,并且还允许自定义拖放过程的各方面。
此类的主要目的是提供开发人员需要的信息,以便确定传输的适合性或者导入传输中包含的数据。但它同时又是一个控制器,可自定义拖放过程中的属性,比如是否显示放置位置,使用哪种放置动作等。
开发人员通常不需要创建此类的实例。它们是 DnD 实现向 TransferHandler
中的某些方法提供的。
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 |
构造方法详细信息 |
---|
public TransferHandler.TransferSupport(Component component, Transferable transferable)
Transferable
创建一个
TransferSupport
,对于该
TransferSupport
isDrop()
返回
false
。
component
- 目标组件
transferable
- transferable
NullPointerException
- 如果任一参数为
null
方法详细信息 |
---|
public boolean isDrop()
TransferSupport
是否表示一个放置操作。
true
;否则返回
false
。
public Component getComponent()
public TransferHandler.DropLocation getDropLocation()
TransferSupport
表示一个放置操作时,返回组件的当前放置位置(非
null
)。
注:对于带内置放置操作支持的组件,此位置将是一个 DropLocation
的子类,该 DropLocation
的类型与该组件的 getDropLocation
方法返回的相同。
此方法只用于拖放传输。isDrop()
为 false
时调用此方法将导致 IllegalStateException
。
IllegalStateException
- 如果此 TransferSupport 不是一个放置操作
isDrop
public void setShowDropLocation(boolean showDropLocation)
TransferHandler
已声明它能够接受此
TransferSupport
表示的导入时才显示放置位置。使用此方法,可以将放置位置强制改为总是显示,或总是不显示。
此方法只用于拖放传输。isDrop()
为 false
时调用此方法将导致 IllegalStateException
。
showDropLocation
- 是否指示放置位置
IllegalStateException
- 如果此 TransferSupport 不是一个放置操作
isDrop
public void setDropAction(int dropAction)
COPY
、
MOVE
或
LINK
之一。
此方法只用于拖放传输。isDrop()
为 false
时调用此方法将导致 IllegalStateException
。
dropAction
- 放置动作
IllegalStateException
- 如果此 TransferSupport 不是一个放置操作
IllegalArgumentException
- 如果指定了无效的动作
getDropAction()
,
getUserDropAction()
,
getSourceDropActions()
,
isDrop
public int getDropAction()
TransferSupport
表示放置操作时,返回为其选择的动作。
除非通过 setDropAction
显式地选择,否则此方法返回 getUserDropAction
提供的用户放置动作。
可以使用 TransferHandler
的 importData
方法查询此动作,以便根据该动作自定义处理方法。
此方法只用于拖放传输。isDrop()
为 false
时调用此方法将导致 IllegalStateException
。
setDropAction(int)
,
getUserDropAction()
,
isDrop
public int getUserDropAction()
TransferSupport
表示一个放置操作时,返回其用户放置动作。
根据 DropTargetDragEvent
和 DropTargetDropEvent
文档中的描述,为放置操作选择用户放置动作。通过 setDropAction
方法,可以选择不同的动作作为放置动作。
当要确定放置操作的适合性或者对显式地选择放置动作作决定的时候,可以使用 TransferHandler
的 canImport
方法查询此动作。
此方法只用于拖放传输。isDrop()
为 false
时调用此方法将导致 IllegalStateException
。
IllegalStateException
- 如果此 TransferSupport 不是一个放置操作
setDropAction(int)
,
getDropAction()
,
isDrop
public int getSourceDropActions()
TransferSupport
表示放置操作时,返回拖动源受支持的放置动作。
源动作表示此传输的源所支持的动作集合,并表示为 COPY
、MOVE
和 LINK
的某个按位或组合。当要确定放置操作的适合性或者对显式地选择放置动作作决定的时候,可以使用 TransferHandler
的 canImport
方法查询此动作。要确定源是否支持指定动作,可以将该动作与源放置动作进行按位加,然后将结果与初始动作进行比较。例如:
boolean copySupported = (COPY & getSourceDropActions()) == COPY;
此方法只用于拖放传输。isDrop()
为 false
时调用此方法将导致 IllegalStateException
。
IllegalStateException
- 如果此 TransferSupport 不是一个放置操作
isDrop
public DataFlavor[] getDataFlavors()
public boolean isDataFlavorSupported(DataFlavor df)
df
- 要测试的
DataFlavor
public Transferable getTransferable()
Transferable
。
注:除非有必要直接获取 Transferable
,否则使用此类的其他方法之一查询传输。这可能比直接获取 Transferable
并询问它执行得更好。
Transferable