当前位置: 首页 > 知识库问答 >
问题:

将一些文本放到treeViewer的treeitem上,并将其进一步填充到treeitem中

戚俊健
2023-03-14

我想从tableViewer中拖动文本,放到树查看器上,然后将拖动的文本填充到选定的树项中。设置了拖放源和拖放目标。遇到的第一个问题是,DropTargetEvent的项为null,因此我不知道将哪个treeitem文本拖放到哪个树上。

下降目标的下降方法代码如下:

public void drop(DropTargetEvent event) {
   System.out.println("Droped" + event);
   if (event.data == null) { 
     event.detail = DND.DROP_NONE;
    }
    //TreeItem item = (TreeItem) event.item;
   Tree xmlTree = xmlVisualEditor.getTree();  //to get the target tree
   Point selectedPoint = new Point(event.x, event.y);
   TreeItem item  = xmlTree.getItem(selectedPoint);    #<----- Null pointer exception

   if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
      String dropedData = (String) event.data;
      System.out.println("Dropped Data:" + dropedData);
      item.setText(dropedData); 
   }

}

我打印放置目标事件的内容,它显示为:

DropTargetEvent{DropTarget{}时间=141201730数据=学生姓名x=861 y=393项=空操作=3操作=1反馈=1数据类型={13 1}currentDataType=13}

可以看出,项为空。

关于下一步要做的事,我需要

>

  • 把树放在放下的地方。

    将拖动的文本填充到删除的树项的一列中

    欢迎对解决方案提出任何意见。谢谢。

  • 共有1个答案

    滕弘新
    2023-03-14

    对于TreeViewer,您应该扩展org.eclipse.jface.viewers.ViewerDropAdapter并实现performDrop方法。使用TreeViewer.addDropSupport安装适配器。

    在performDrop中,调用getCurrentTarget()将获得目标对象。

     类似资料:
    • 问题内容: 如何在SWT树中的树项上添加右键单击弹出菜单。每个树项目都应在其上启用右键 问题答案: 只需使用。 你去了:

    • 我目前正在使用代表文件系统的JavaFx-2的TreeView。 我想启用拖放以允许移动操作,但TreeItem似乎不包括拖动事件侦听器。我只能在englobing TreeView对象上实现拖放,但它不适用于子项。 我是否遗漏了什么,或者TreeItems还不支持拖放事件?

    • 当我单击一个按钮时,有没有一种方法可以更改TreeView的TreeItem的文本?我尝试执行oracle示例http://docs.oracle.com/javafx/2/uicontrols/tree-view.htm中所示的操作,但我不想通过单击TreeItem更改它,而是单击按钮。第二步,我想使用上下文菜单打开一个带有Textfield的窗口,在这里我可以手动插入文本以更改treeitem

    • 问题内容: 我正在寻找一个小的代码段,它将在文件中找到一行并删除该行(不是内容而是行),但是找不到。因此,例如,我在以下文件中: myFile.txt: 需要具有这样的功能:,如果通过 ,我将获得如下文件: myFile.txt: 问题答案: 该解决方案可能不是最佳或漂亮的,但它可以工作。它逐行读取输入文件,并将每一行写到一个临时输出文件中。每当遇到符合您要查找的内容的行时,它都会跳过将其写出的操

    • 我正在为类创建一个EMPLOYeE记录文件的程序。我创建了两个结构。一个叫做雇员,一个叫做日期。EMPLOYeE结构有一个字符数组、一个int、6个浮点值和DATE(另一个结构)。DATE结构只有三个int值(月、日、年)。 我创建了一个名为person[1000]的EMPLOYEE类型数组。 这是我的代码,我一直得到一个调试断言失败的错误,在可视化工作室指向fWrite. c表达式:(流!=NU