public class TransferHandler extends Object implements Serializable
Transferable
到Swing组件的传输。
Transferable
用于表示通过剪切,复制或粘贴到剪贴板进行交换的数据。
它也用于拖放操作以表示从组件拖动,并将其拖放到组件。
Swing提供了自动支持使用此类实现提供的功能的剪切,复制和粘贴键盘绑定的功能。
Swing还提供了自动支持使用此类实现提供的功能的拖放功能。
Swing开发人员可以专注于通过在Swing组件上设置transferHandler
属性来指定传输的语义。
该类被实现为通过在构造函数中指定属性的名称来提供传递组件属性的默认行为。 例如,要通过剪贴板或拖放操作将前景颜色从一个组件传输到另一个TransferHandler
,可以使用字符串“foreground”构建TransferHandler。 内置的支持将使用getForeground
返回的getForeground
作为转移的来源,而转移目标为setForeground
。
有关详细信息 ,请参阅Java教程中的How to Use Drag and Drop and Data Transfer部分。
Modifier and Type | Class and Description |
---|---|
static class |
TransferHandler.DropLocation
表示应插入丢弃数据的位置。
|
static class |
TransferHandler.TransferSupport
该类封装了剪贴板的所有相关细节或拖放传输,还允许自定义拖放体验的方面。
|
Modifier and Type | Field and Description |
---|---|
static int |
COPY
int “复制”转移动作的int。
|
static int |
COPY_OR_MOVE
int “复制”或“移动”的源操作能力的int。
|
static int |
LINK
一个
int 代表一个“链接”转移动作。
|
static int |
MOVE
int “移动”转移动作的int。
|
static int |
NONE
一个
int 不表示转移动作。
|
Modifier | Constructor and Description |
---|---|
protected |
TransferHandler()
子类的便利构造函数。
|
|
TransferHandler(String property)
构造一个可以通过剪贴板或拖放操作将Java Bean属性从一个组件传输到另一个组件的传输处理程序。
|
Modifier and Type | Method and Description |
---|---|
boolean |
canImport(JComponent comp, DataFlavor[] transferFlavors)
指示组件是否将在实际尝试导入之前接受给定的一组数据风格的导入。
|
boolean |
canImport(TransferHandler.TransferSupport support)
这种方法在拖放操作期间重复调用,以允许开发人员配置属性并返回传输的可接受性;
具有一个返回值 true 表示由所述给定表示的转移TransferSupport (包含所有的传送的细节)是可以接受的,在当前时间,和的值false 拒绝传输。
|
protected Transferable |
createTransferable(JComponent c)
创建一个
Transferable 作为数据传输的来源。
|
void |
exportAsDrag(JComponent comp, InputEvent e, int action)
导致启动Swing拖动支持。
|
protected void |
exportDone(JComponent source, Transferable data, int action)
数据导出后调用。
|
void |
exportToClipboard(JComponent comp, Clipboard clip, int action)
导致从给定组件转移到给定的剪贴板。
|
static Action |
getCopyAction()
返回一个
Action 执行复制操作到剪贴板。
|
static Action |
getCutAction()
返回一个
Action 其执行削减操作到剪贴板。
|
Image |
getDragImage()
返回拖动图像。
|
Point |
getDragImageOffset()
返回要拖动的图像的锚点偏移量。
|
static Action |
getPasteAction()
返回从
Action 执行粘贴操作的Action。
|
int |
getSourceActions(JComponent c)
返回源的支持类型;
任何按位或组合 COPY , MOVE 和LINK 。
|
Icon |
getVisualRepresentation(Transferable t)
返回一个建立传输外观的对象。
|
boolean |
importData(JComponent comp, Transferable t)
导致从剪贴板或DND丢弃操作传输到组件。
|
boolean |
importData(TransferHandler.TransferSupport support)
导致从剪贴板或拖放操作发生转移。
|
void |
setDragImage(Image img)
设置拖动图像参数。
|
void |
setDragImageOffset(Point p)
设置要拖动的图像的锚点偏移量。
|
public static final int NONE
int
代表无转移动作。
public static final int COPY
int
“复制”转移动作的int。
当数据复制到剪贴板或在拖放操作中复制到别处时,将使用此值。
public static final int MOVE
int
“移动”转移动作的int。
当数据移动到剪贴板(即剪切)或在拖放操作中移动到其他位置时,将使用此值。
public static final int COPY_OR_MOVE
int
“复制”或“移动”的源操作能力的int。
public static final int LINK
int
“链接”转移动作的int。
该值用于指定数据应该在拖放操作中链接。
DnDConstants.ACTION_LINK
,
Constant Field Values
public TransferHandler(String property)
property
- 要转让的财产的名称;
这可以是null
如果没有与传输处理程序相关联的属性(例如执行某种其他类型的传输的子类)
protected TransferHandler()
public static Action getCutAction()
Action
其执行削减操作到剪贴板。
当执行时,这个动作在操作JComponent
所述的源ActionEvent
通过调用exportToClipboard
,具有MOVE
动作,对组件的TransferHandler
。
Action
进行削减到剪贴板
public static Action getCopyAction()
Action
执行复制操作到剪贴板。
当执行时,这个动作在操作JComponent
所述的源ActionEvent
通过调用exportToClipboard
,具有COPY
动作,对组件的TransferHandler
。
Action
用于执行副本到剪贴板
public static Action getPasteAction()
Action
执行粘贴操作的Action。
当执行时,这个动作在操作JComponent
的来源ActionEvent
通过调用importData
,与剪贴板中的内容,对组件的TransferHandler
。
Action
从剪贴板执行糊剂
public void setDragImage(Image img)
img
- 要拖动的图像
public Image getDragImage()
null
。
public void setDragImageOffset(Point p)
null
。
p
- 对应于图像相对于图像的左上角的锚定偏移的坐标的
Point
对象
public Point getDragImageOffset()
Point
对象。
点(0,0)
默认返回。
public void exportAsDrag(JComponent comp, InputEvent e, int action)
javax.swing.plaf.basic
包中的各种UI实现调用。
这可以通过自定义UI实现来使用Swing拖动支持。
这个方法也可以被一个Swing扩展名称为JComponent的子类来JComponent
,以利用Swing的拖动支持。
转让不一定会一直在这个调用(即调用不会阻塞等待降)的回归完成。 转移将通过Swing实现java.awt.dnd
机制进行,不需要开发人员的进一步努力。 当传输完成时,将调用exportDone
方法。
comp
- 保存要传输的数据的组件;
提供共享TransferHandler
s
e
- 触发转移的事件
action
- 最初要求的转移行动;
任一COPY
, MOVE
或LINK
;
DnD系统可以改变在拖动操作过程中使用的动作
public void exportToClipboard(JComponent comp, Clipboard clip, int action) throws IllegalStateException
转移将使用java.awt.datatransfer
机制进行,不需要开发人员进一步的努力。 任何数据传输都将完成,并且在此方法返回之前,将使用发生的操作调用exportDone
方法。 如果尝试将数据放在剪贴板上,则IllegalStateException
投掷的IllegalStateException将通过此方法传播。 但是, exportDone
将首先调用NONE
的一致性。
comp
- 保存要传输的数据的组件;
提供共享TransferHandler
s
clip
- 将数据传输到的剪贴板
action
- 请求转移行动;
这应该是COPY
或MOVE
的值;
所执行的操作是由getSourceActions提供的传输能力和所请求的操作的交集;
交点可能导致的动作NONE
如果不支持所请求的动作
IllegalStateException
- 如果剪贴板当前不可用
Clipboard.setContents(Transferable, ClipboardOwner)
public boolean importData(TransferHandler.TransferSupport support)
Transferable
要导入和组分转移到被包含在内TransferSupport
。
虽然拖放实现调用canImport
以确定在调用此方法之前转接的适用性,但是粘贴的实现不会。 因此,不能假设在调用该方法进行粘贴时可以接受转移。 建议明确地要求canImport
来处理这种情况。
注意:传递给此方法的TransferSupport
对象仅对方法调用的持续时间有效。 该方法返回后可能包含什么值是未定义的。
support
- 该对象包含传输的细节,而不是
null
。
NullPointerException
- 如果
support
是
null
canImport(TransferHandler.TransferSupport)
public boolean importData(JComponent comp, Transferable t)
Transferable
表示要导入到组件的数据。
注意:Swing现在调用较新版本的importData
,它需要一个TransferSupport
,后者又称此方法(如果TransferSupport中的TransferSupport
是JComponent
)。 鼓励开发者调用并覆盖较新版本,因为它提供更多信息(并且是唯一支持使用TransferHandler
直接在JFrame
或其他非JComponent
上使用的版本)。
comp
- 接收转移的组件;
提供共享TransferHandler
s
t
- 要导入的数据
importData(TransferHandler.TransferSupport)
public boolean canImport(TransferHandler.TransferSupport support)
true
表示由所述给定表示的转移TransferSupport
(包含所有的传送的细节)是可以接受的,在当前时间,和的值false
拒绝传输。
对于那些在拖放期间自动显示放置位置的组件,默认情况下接受传输,可以让他们显示放置位置。 这可以通过致电setShowDropLocation
在setShowDropLocation
上TransferSupport
。
默认情况下,当传输被接受时,所选择的放置操作是用户通过其拖动手势选择的放置操作。 开发人员可以重写此选择不同的动作,从支持的源动作,通过调用setDropAction
上TransferSupport
。
每次调用canImport
,该TransferSupport
含有新鲜的状态。 因此,必须在每次调用时设置其上设置的任何属性。 一下跌, canImport
被称为最后一次,然后调用importData
。 TransferSupport
在上次通话期间设置的任何状态将在importData中importData
。
这种方法在内部不被调用以响应粘贴操作。 因此,建议importData的importData
在这种情况下importData
式调用此方法,并且该方法也准备返回粘贴操作的适用性。
注意:传递给此方法的TransferSupport
对象仅对方法调用的持续时间有效。 该方法返回后可能包含什么值是未定义的。
support
- 该对象包含转移的细节,而不是
null
。
true
如果导入可以发生,
false
false
NullPointerException
- 如果
support
是
null
importData(TransferHandler.TransferSupport)
,
TransferHandler.TransferSupport.setShowDropLocation(boolean)
,
TransferHandler.TransferSupport.setDropAction(int)
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors)
注意:Swing现在调用较新版本的canImport
,它需要一个TransferSupport
,后者又调用此方法(只有TransferSupport中的TransferSupport
是JComponent
)。 鼓励开发人员呼叫并覆盖较新版本,因为它提供更多信息(并且是唯一支持使用TransferHandler
直接在JFrame
或其他非JComponent
上使用的版本)。
comp
- 接收转移的组件;
提供共享TransferHandler
s
transferFlavors
-
transferFlavors
的数据格式
canImport(TransferHandler.TransferSupport)
public int getSourceActions(JComponent c)
COPY
, MOVE
和LINK
。
有些模型是不可变的,所以传输操作MOVE
不应该在这种情况下公开。 返回NONE
禁用组件传输。
c
- 保存要传输的数据的组件;
提供共享TransferHandler
s
COPY
如果传输属性可以找到,否则返回
NONE
public Icon getVisualRepresentation(Transferable t)
Icon
接口不应改变图形剪辑或α水平。
图标实现不需要是矩形或绘制所有的边界矩形和逻辑,调用图标paint方法不应该假定所有的位都被绘制。
null
是此方法的有效返回值,表示没有提供视觉表示。
在这种情况下,调用逻辑可以自由地表示可转移的。
如果返回值为null
,默认的Swing逻辑将不会进行alpha混合拖动null
。
t
- 要传输的数据;
该值预计由createTransferable
创建
null
,表示没有默认的视觉表示
protected Transferable createTransferable(JComponent c)
Transferable
作为数据传输的来源。
返回到要传送的数据的表示,或null
如果组件的属性是null
c
- 保存要传输的数据的组件;
提供共享TransferHandler
s
null
如果与c相关
c
的属性是
null
protected void exportDone(JComponent source, Transferable data, int action)
MOVE
,则此方法应删除传输的数据。
这种方法被执行,因为MOVE
不是这个实现的支持的操作( getSourceActions
不包括MOVE
)。
source
- 作为数据源的组件
data
- 如果操作为
NONE
,则传输的数据或可能为空。
action
- 执行的实际操作