JavaSWT:拖放

JavaSWT:拖放,java,drag-and-drop,swt,Java,Drag And Drop,Swt,我想在TreeViewer中拖放节点以对其重新排序。我的树中的节点包装一个IJavaElement或一个IFile。 我的问题是,一旦执行drop事件(=null),就无法访问我在drop事件中放置这些节点值的任何尝试。显然,我的TransferHandles有问题,您必须使用或创建它 @Override public void dragSetData(DragSourceEvent event) { IStructuredSelection select

我想在
TreeViewer
中拖放节点以对其重新排序。我的树中的节点包装一个
IJavaElement
或一个
IFile
。 我的问题是,一旦执行drop事件(=
null
),就无法访问我在drop事件中放置这些节点值的任何尝试。显然,我的
TransferHandles
有问题,您必须使用或创建它

   @Override
    public void dragSetData(DragSourceEvent event) {     
        IStructuredSelection selections = treeViewer.getSelections();
        IBookmark dragNode = (IBookmark) selections.getFirstElement();

        //There is only 1 transfer handle as return
        event.dataType = FileTransfer.getInstance().getSupportedTypes()[0];
        event.data = dragNode.getValue();//<-- Returns my IFile
@覆盖
公共无效dragSetData(DragSourceEvent事件){
IStructuredSelection=treeViewer.getSelections();
IBookmark dragNode=(IBookmark)selections.getFirstElement();
//只有一个传输句柄作为返回
event.dataType=FileTransfer.getInstance().getSupportedTypes()[0];

event.data=dragNode.getValue();//您的代码不清楚为什么在drop事件中为null(如果传输类型不兼容,则根本无法删除)。但是,在
dragSetData()中设置数据类型
无效。应使用的
addDragSupport
addDropSupport
配置传输类型

是否有方法将被拖动的对象的当前实例放置到拖动事件中

如前所述,您可以使用
LocalSelectionTransfer