DragSource.java 文件源码

java
阅读 24 收藏 0 点赞 0 评论 0

项目:VarJ 作者:
/**
 * Start a drag, given the <code>DragGestureEvent</code> 
 * that initiated the drag, the initial 
 * <code>Cursor</code> to use,
 * the <code>Image</code> to drag, 
 * the offset of the <code>Image</code> origin 
 * from the hotspot of the <code>Cursor</code> at 
 * the instant of the trigger,
 * the <code>Transferable</code> subject data 
 * of the drag, the <code>DragSourceListener</code>, 
 * and the <code>FlavorMap</code>. 
 * <P>
 * @param trigger        the <code>DragGestureEvent</code> that initiated the drag
 * @param dragCursor     the initial <code>Cursor</code> or <code>null</code> for defaults
 * @param dragImage      the image to drag or null,
 * @param imageOffset    the offset of the <code>Image</code> origin from the hotspot
 *               of the <code>Cursor</code> at the instant of the trigger
 * @param transferable   the subject data of the drag
 * @param dsl        the <code>DragSourceListener</code>
 * @param flavorMap      the <code>FlavorMap</code> to use, or <code>null</code>
 * <P>
 * @throws <code>java.awt.dnd.InvalidDnDOperationException</code> 
 *    if the Drag and Drop
 *    system is unable to initiate a drag operation, or if the user
 *    attempts to start a drag while an existing drag operation 
 *    is still executing
 */

public void startDrag(DragGestureEvent   trigger,
 Cursor      dragCursor,
 Image           dragImage,
 Point           imageOffset,
 Transferable        transferable,
 DragSourceListener dsl,
 FlavorMap       flavorMap) throws InvalidDnDOperationException {

    SunDragSourceContextPeer.setDragDropInProgress(true);

    try {
        if (flavorMap != null) this.flavorMap = flavorMap;

        DragSourceContextPeer dscp = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);

        DragSourceContext     dsc = createDragSourceContext(dscp,
                                                            trigger,
                                                            dragCursor,
                                                            dragImage,
                                                            imageOffset,
                                                            transferable,
                                                            dsl
                                                            );

        if (dsc == null) {
            throw new InvalidDnDOperationException();
        }

        dscp.startDrag(dsc, dsc.getCursor(), dragImage, imageOffset); // may throw
    } catch (RuntimeException e) {
        SunDragSourceContextPeer.setDragDropInProgress(false);
        throw e;
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号