在 SWT 网格上拖放
Drag and Drop on SWT Grid
我想在 Nebula Grid 上实现拖放操作。我找到了侦听器 DragDetectListener
但我不知道如何找到目标(这是我要释放行的地方)。我不能使用 SWT Table 因为我必须使用 Nebula Grid。
更清楚:
我有一个 N 行的 Nebula Grid,我想将其中一行拖到其他两行之间。我知道我移动的行。我怎样才能删除该行?
拖放应该涉及两个侦听器。
一个在开始拖动的组件上,另一个在完成拖放的组件上。
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]);
}
}
}
});
我想在 Nebula Grid 上实现拖放操作。我找到了侦听器 DragDetectListener
但我不知道如何找到目标(这是我要释放行的地方)。我不能使用 SWT Table 因为我必须使用 Nebula Grid。
更清楚:
我有一个 N 行的 Nebula Grid,我想将其中一行拖到其他两行之间。我知道我移动的行。我怎样才能删除该行?
拖放应该涉及两个侦听器。 一个在开始拖动的组件上,另一个在完成拖放的组件上。
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]);
}
}
}
});