gpt4 book ai didi

java - 在表 SWT/RCP 中移动项目

转载 作者:行者123 更新时间:2023-12-01 05:47:00 24 4
gpt4 key购买 nike

我在移动表格中的单元格时遇到问题。有人知道如何在 SWT 表中移动行吗?我想按用户更改订单交互,我不需要对条目进行排序。

我想通过单击按钮向上或向下移动选定的行或通过拖放移动表格项目来实现此目的。

我正在使用 eclips 3.6 和 java 1.6

这是我尝试使用拖放但不起作用:

 Transfer[] types = new Transfer[] { LocalSelectionTransfer.getTransfer()};
DragSource source = new DragSource(table, DND.DROP_MOVE );
source.setTransfer(types);

source.addDragListener(new DragSourceAdapter() {
public void dragSetData(DragSourceEvent event) {
// Get the selected items in the drag source
DragSource ds = (DragSource) event.widget;
Table table = (Table) ds.getControl();
TableItem[] selection = table.getSelection();
System.out.println(" drag "+ selection[0].getText());
}
});

DropTarget target = new DropTarget(table, DND.DROP_MOVE | DND.DROP_DEFAULT);
target.setTransfer(types);
TableViewer tb = new TableViewer(table);
tb.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(viewer) {

@Override
public boolean validateDrop(Object target, int operation,
TransferData transferType) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean performDrop(Object data) {
// TODO Auto-generated method stub
return false;
}
});

我想要移动的项目不仅仅是一列。

我遇到的错误是:

org.eclipse.swt.SWTError:无法初始化 Drop

当我被告知哪个新项目(表中的索引)是移动的项目时,这就足够了,然后我可以更改我的对象列表并重新绘制表格。

知道如何解决这个问题吗?

问候,海瑟姆

最佳答案

我认为您需要在添加 dropSupport 之前向表查看器添加 DragSupport。您不需要使用 DragSource :

    TableViewer viewer = new TableViewer(table);
Transfer[] types = new Transfer[] { PluginTransfer.getInstance() };
viewer.addDragSupport(DND.DROP_MOVE, types, new DragSourceAdapter() {
@Override
public void dragSetData(DragSourceEvent event) {
// Get the selected items in the drag source
DragSource ds = (DragSource) event.widget;
Table table = (Table) ds.getControl();
TableItem[] selection = table.getSelection();
System.out.println(" drag " + selection[0].getText());
}
});

viewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(viewer) {

@Override
public boolean validateDrop(Object target, int operation, TransferData transferType) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean performDrop(Object data) {
// TODO Auto-generated method stub
return false;
}
});

关于java - 在表 SWT/RCP 中移动项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com