[英]Drag and Drop on SWT Grid
我想在星雲網格上實現拖放。 我找到了偵聽器DragDetectListener
但我不知道如何找到目標(這是我要釋放行的位置)。 我不能使用 SWT 表,因為我必須使用星雲網格。
更清楚一點:
我有一個 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]);
}
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.