gpt4 book ai didi

java - 在 SWT 网格上拖放

转载 作者:行者123 更新时间:2023-12-01 11:02:09 25 4
gpt4 key购买 nike

我想在星云网格上实现拖放。我找到了监听器 DragDetectListener 但我不知道如何找到目标(这是我想要释放行的位置)。我无法使用 SWT 表,因为我必须使用 Nebula Grid。

更清楚地说:

我有一个包含 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]);
}
}
}
});

关于java - 在 SWT 网格上拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254439/

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