【问题标题】:Drag and Drop on SWT Grid在 SWT 网格上拖放
【发布时间】:2015-10-21 08:30:24
【问题描述】:

我想在星云网格上实现拖放。我找到了监听器DragDetectListener,但我不知道如何找到目标(这是我要释放行的位置)。我不能使用 SWT 表,因为我必须使用 Nebula Grid。

为了更清楚:

我有一个 N 行的星云网格,我想在另外两行之间拖动其中一行。我知道我移动的那一行。如何让行被删除?

【问题讨论】:

  • 这是一篇解释 DnD 如何在 SWT 中工作的文章:eclipse.org/articles/Article-SWT-DND/DND-in-SWT.html
  • @AndreaVicari 如果您认为某个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的旧帖子上。

标签: java drag-and-drop grid swt


【解决方案1】:

拖放应该涉及两个侦听器。 一个在开始拖动的组件上,另一个在完成拖放的组件上。

source.addDragListener(new DragSourceListener() {
   public void dragStart(DragSourceEvent event) {
      // Only start the drag if needed
      if (iDoNotNeedToStartTheDrag) {
          event.doit = false;
      }
   }
   public void dragSetData(DragSourceEvent event) {
     // Provide the data of the requested type.
     if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
          event.data = "the data to transfert";
     }
   }
   public void dragFinished(DragSourceEvent event) {
     // At the end of the drag, if we need to do something on the source
   }
});

然后在目标上:

target.addDropListener(new DropTargetListener() {
    public void dragEnter(DropTargetEvent event) {
    }
    public void dragOver(DropTargetEvent event) {
    }
    public void dragOperationChanged(DropTargetEvent event) {
    }
    public void dragLeave(DropTargetEvent event) {
    }
    public void dropAccept(DropTargetEvent event) {
    }
    public void drop(DropTargetEvent event) {
        // do what ever you want...
        if (textTransfer.isSupportedType(event.currentDataType)) {
            String text = (String)event.data;
            TableItem item = new TableItem(dropTable, SWT.NONE);
            item.setText(text);
        }
        if (fileTransfer.isSupportedType(event.currentDataType)){
            String[] files = (String[])event.data;
            for (int i = 0; i < files.length; i++) {
                TableItem item = new TableItem(dropTable, SWT.NONE);
                item.setText(files[i]);
            }
        }
    }
});

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多