【问题标题】:Java SWT: Drag / DropJava SWT:拖放
【发布时间】:2012-01-13 19:28:25
【问题描述】:

我想在TreeViewer 中拖放节点以重新排序。我的树中的节点包含IJavaElementIFile。 我的问题是,一旦执行了放置事件(=null),我将这些节点值放在拖动事件中的任何尝试都无法访问。显然,您必须使用或创建的 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

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

编辑:

有没有办法将被拖动到拖动事件中的对象的当前实例?我只在我自己的视图中在 Eclipse 中工作以执行此操作。而且我实际上对删除的对象的实例更感兴趣,而不仅仅是节点的值。

【问题讨论】:

    标签: java drag-and-drop swt


    【解决方案1】:

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

    有没有办法将被拖到拖动事件中的对象的当前实例放置?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多