gpt4 book ai didi

java - Drop 事件在 SWT 中发生多次

转载 作者:行者123 更新时间:2023-12-01 11:57:22 24 4
gpt4 key购买 nike

我正在 SWT 中实现拖放功能。

这是我的代码片段

用于拖动

private class MyDragSourceAdapter extends DragSourceAdapter {

/** The m tree viewer. */
private final TreeViewer treeViewer;

/**
* Instantiates a new my drag source adapter.
*
* @param treeViewer the tree viewer
*/
public MyDragSourceAdapter(TreeViewer treeViewer) {
this.treeViewer = treeViewer;
}

/**
* {@inheritDoc}
*/
@Override
public void dragFinished(DragSourceEvent event) {
// clean buffer
// k = null;
}

/**
* {@inheritDoc}
*/
@Override
public void dragSetData(DragSourceEvent event) {
event.data = "test";
}

/**
* {@inheritDoc}
*/
@Override
public void dragStart(DragSourceEvent event) {

if (some condition) {
// do something
return;
}
event.doit = false;
}
}

对于掉落

private class MyDropTargetAdapter extends DropTargetAdapter {

@Override
public void dragEnter(DropTargetEvent event) {
event.detail = DND.DROP_LINK;
}

/**
* {@inheritDoc}
*/
@Override
public void dragOver(DropTargetEvent event) {
// Do some functionality
}

/**
* {@inheritDoc}
*/
@Override
public void drop(DropTargetEvent event) {
event.detail = DND.DROP_NONE;
}
}

有时“dragOver()”方法被调用多次?因此,拖动发生的次数与调用的dragOver()方法的次数一样多。

我希望放置操作在第一次后停止。

请帮忙

最佳答案

dragOver() 在实际放置发生之前,当鼠标仍悬停在控件上时发生。您可能想重写 drop()。但如果您希望完全停止发生丢弃,请将 DropTargetEvent 上的字段 detail 设置为 DND.DROP_NONE

关于java - Drop 事件在 SWT 中发生多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337023/

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