如何在Java RCP中的jface表中拖放多行?

时间:2018-07-02 12:35:35

标签: swt jface rcp

在此,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();

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

1 个答案:

答案 0 :(得分:2)

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

在放置处理程序中:

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

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

相关问题