在treeviewer中怎么将一个节点拖到另外一个节点,变成另外一个节点的子节点!

解决方案 »

  1.   

    已经知道答案了final Transfer[] transfer=new Transfer[]{LocalSelectionTransfer.getTransfer()};

    treeViewer.addDragSupport(DND.DROP_MOVE, transfer, new DragSourceAdapter (){ @Override
    public void dragSetData(DragSourceEvent event) {
    // TODO Auto-generated method stub ((LocalSelectionTransfer)transfer[0]).setSelection((IStructuredSelection)treeViewer.getSelection());
    event.data=((IStructuredSelection)treeViewer.getSelection()).getFirstElement();
    event.doit = true;
    } @Override
    public void dragFinished(DragSourceEvent event) {
    // TODO Auto-generated method stub
    } @Override
    public void dragStart(DragSourceEvent event) {
    // TODO Auto-generated method stub

    }
    });
    treeViewer.addDropSupport(DND.DROP_MOVE, transfer, new ViewerDropAdapter(treeViewer){ @Override
    public boolean performDrop(Object data) {
    // TODO Auto-generated method stub
    getCurrentLocation();
    Element element=(Element)getCurrentTarget();
    IStructuredSelection selection=(IStructuredSelection)data;
    Element elemented=(Element)selection.getFirstElement();
    System.out.println("element:"+element.getAttribute("name"));
    System.out.println("drop:"+elemented.getAttribute("name"));
    element.appendChild(elemented);
    treeViewer.refresh();
    return true;
    } @Override
    public boolean validateDrop(Object target, int operation,
    TransferData transferType) {
    // TODO Auto-generated method stub
    return true;
    }
    });
      

  2.   

    // TODO Auto-generated method stub                ((LocalSelectionTransfer)transfer[0]).setSelection((IStructuredSelection)treeViewer.getSelection());
    这个要这样的
    // TODO Auto-generated method stub                
    ((LocalSelectionTransfer)transfer[0]).setSelection((IStructuredSelection)treeViewer.getSelection());
      

  3.   

    用ExtJs吧,我就是因为树接点才学这个的。