我想创建以下工作流程:


有两种类型的盒子(A和B)和两种类型的篮子(C和D)。
两种类型的框都可以拖放到基于C的框中。
但是只能将类型A的框拖放到D中。


我想在DropTargetListener中的dragEnter事件期间检测框的类型(A或B),以便可以将光标更改为DROP_NONE。

但是现在我所能做的就是在实际的掉落事件中检测到它,然后在与篮筐不兼容时将其丢弃。

请指导我如何解决此问题。

注意:我正在使用SWT org.eclipse.swt.dnd框架。

片段:

我想做这样的事情:

public void dragEnter (DropTargetEvent e)
{
    Box b = e.getSource // this is the part I need help with

    if(b.type == 'B')
       e.detail = DROP_NONE;
}

最佳答案

您可以创建一个静态变量来保留当前拖动源。
您在dragStart中设置它,并在dragFinished中将其为空。
然后在dragEnter和其他事件中使用它进行评估。

09-25 17:26