Java SWT:拖放

时间:2012-01-13 19:28:25

标签: java drag-and-drop swt

我想拖动&删除TreeViewer中的节点以重新排序它们。我树中的节点包含IJavaElementIFile。 我的问题是,一旦执行了drop事件(= null),我就不会尝试将这些节点值放在drag-event中。显然,我在使用或创建这个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

它应该以这种方式工作,但没有任何东西到达我的掉落听众。有谁知道我做错了什么?

修改

有没有办法将拖动对象的当前实例放入拖动事件?我只是在我自己的视图中使用Eclipse进行此操作。而且我实际上对丢弃的对象实例更感兴趣,而不仅仅是节点的值。

1 个答案:

答案 0 :(得分:0)

从您的代码中不清楚为什么在drop事件中得到 null (如果传输类型不兼容,则根本不会丢弃)。但是,在dragSetData()中设置 dataType 无效。应使用StructuredVieweraddDragSupportaddDropSupport来配置转移类型。

  

有没有办法将拖动对象的当前实例放入拖动事件?

您可以按照here的说明使用LocalSelectionTransfer