1

我已经创建了一个 jface treeviewer,并且我正在将元素拖放到 treeviewer 中。所以应该将项目添加到树的子子项上。我怎样才能获得要删除元素的子子名。例如:

tree->
      A->
        1
        2
      B
      C

因此,当我拖放 1 时,它应该将所选项目设为 1,我们该怎么做。

drop的代码如下

int operationsn = DND.DROP_COPY | DND.DROP_MOVE;
        Transfer[] transferType = new Transfer[]{TestTransfer.getInstance()};

        DropTarget targetts = new DropTarget(treeComposite, operationsn);
        targetts.setTransfer(new Transfer[] { TestTransfer.getInstance() });

        targetts.addDropListener(new DropTargetListener() {
            public void dragEnter(DropTargetEvent event) {
                System.out.println("dragEnter in target ");
                if (event.detail == DND.DROP_DEFAULT) {
                    if ((event.operations & DND.DROP_COPY) != 0) {
                        event.detail = DND.DROP_COPY;
                    } else {
                        event.detail = DND.DROP_NONE;
                    }
                }

            }
            public void dragOver(DropTargetEvent event) {
                System.out.println("dragOver in target ");
                event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;

            }
            public void dragOperationChanged(DropTargetEvent event) {
                System.out.println("dragOperationChanged in target ");
                if (event.detail == DND.DROP_DEFAULT) {
                    if ((event.operations & DND.DROP_COPY) != 0) {
                        event.detail = DND.DROP_COPY;
                    } else {
                        event.detail = DND.DROP_NONE;
                    }
                }

            }
            public void dragLeave(DropTargetEvent event) {
                System.out.println("dragLeave in target ");
            }
            public void dropAccept(DropTargetEvent event) {
                System.out.println("dropAccept in target ");
            }


            public void drop(DropTargetEvent event) {
                //if (textTransfer.isSupportedType(event.currentDataType)) 
                    if (event.data != null) {
                        Test tsType = (Test) event.data;
                           addItem(tsType);
                System.out.println("test step name is" +tsType);
                        }




            }

        });

在 addItem 函数中,我编写了将项目添加到选定项目上的树查看器的代码。但是在删除项目时我无法选择项目,所以我们如何在将元素拖放到树中时选择项目。

4

1 回答 1

1

使用 JFace 查看器时,您可以使用 JFaceViewDropAdapter类而不是DropTargetListener.

这个类为你做了更多的工作,并且有一个getCurrentTarget()返回当前目标元素的方法。

更多细节在这里

于 2014-12-17T08:00:16.367 回答