首页 > 解决方案 > java - 如何在java RCP的jface表中拖放多行?

问题描述

这里, setIdList 是学生 ID 的列表。我想将这些 id 添加到表中。id 在 dragSetData() 方法中设置。我可以通过放入表格来访问 ID 列表。但它在表的最后添加。我希望它在鼠标指针选择的任何行之间添加这个列表。拖代码...

private void addDragSupport() 
{
    int operations = DND.DROP_COPY | DND.DROP_MOVE;
    Transfer[] transferTypes = new Transfer[] { TextTransfer.getInstance() };
    viewer.addDragSupport(operations, transferTypes, new DragSourceListener() 
    {

        @Override
        public void dragStart(DragSourceEvent event) {
            event.doit = false;
            if (null != myVariable) {
                if (myVariable instanceof StudentDetails) {
                    event.doit = true;
                }
            }

        }

        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data = setIdList;
        }

        @Override
        public void dragFinished(DragSourceEvent event) {

        }
    });
}

我在下面的代码中尝试过

IStructuredSelection structuredSelection = this.getStructuredSelection();
List<StudentDetails> studentDetailList = structuredSelection.toList();

但它给了我选定的行。我想要鼠标选择的指针。

标签: swtjfacercp

解决方案


考虑到您正在使用表格查看器。

在丢弃处理程序中:

1)从 TableViewer 获取模型对象:tableViewer.getInput()

2) 从dropTarget对象中找到要添加拖放对象的对象位置。然后在该位置的模型中插入新对象并刷新tableviewer


推荐阅读