java - 在 SWT 网格上拖放

标签 java drag-and-drop grid swt

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

更清楚地说:

我有一个包含 N 行的星云网格,我想将其中一行拖动到另外两行之间。我知道我移动的行。我怎样才能把行放下来?

最佳答案

拖放应该涉及两个监听器。 一个位于开始拖动的组件上,另一个位于完成放置的组件上。

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]);
            }
        }
    }
});

关于java - 在 SWT 网格上拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254439/

相关文章:

java - Intellij IDEA 不会将一些未使用的方法变灰

java - 在 actionPerformed 中运行 "this"方法 - JButton?

java - ByteBuffer 中的限制和容量有什么区别?

c# - 在文本框中拖动文件或文件夹? C#

html - 无法在 React 上为 HTML5 拖放获取 onDragStart 事件

java - 使用 MySQL 的 NetBeans 中的 SQL 语法错误

javascript - Fullcalendar:删除时重复条目(外部)

c# - 在 C# 中如何获取网格中单元格的内容?

java - 兰顿 Ant 不断沿对角线移动

python - Tkinter Canvas 和带网格的滚动条