我很惊讶地发现这还没有完成,或者至少我的研究是这么说的。SWT标签Drag'n'Drop
我有一个Canvas
与RowLayout
和一堆Label
s。
标题非常直截了当:我想使用DND重新排序我的标签。
请不要告诉我我必须设计我自己的算法来计算边界和大小以及类似的东西。
后来编辑:
我使用Zest
考虑,但同样,我找不到在哪里图形节点捕捉到海誓山盟任何例子。
我很惊讶地发现这还没有完成,或者至少我的研究是这么说的。SWT标签Drag'n'Drop
我有一个Canvas
与RowLayout
和一堆Label
s。
标题非常直截了当:我想使用DND重新排序我的标签。
请不要告诉我我必须设计我自己的算法来计算边界和大小以及类似的东西。
后来编辑:
我使用Zest
考虑,但同样,我找不到在哪里图形节点捕捉到海誓山盟任何例子。
大约一年前,我做了类似的事情。
我解决这个问题的方法是使用数据模型来保存标签信息。使用canvas.getChildren()并搜索每个对象之间的分隔符组合或放在顶端的标签。拖放操作完成后,您将搜索您放置的项目并将参考移动到模型中的相应位置。然后重置每个标签上的信息。只有这样做的要求是通过标签信息和对画布的引用保持数据结构。
我自己想过这个,但是我怎么知道当我执行drop时我的鼠标下面有哪个控件?只需遍历儿童并检查其边界? – GGrec
类似以下内容: public void drop(DropTargetDropEvent dtde){src = dtde.getSource(); List
此外,如果标签的内容是独一无二的,您可以查看放入的标签的内容并在模型中循环,以确定您放置的位置。你只需要将对象返回到一个控件,让你可以访问控件中包含的文本;所以,至少,种姓要复合或标签。执行此操作的方法有点类似,因为您执行String targetKey =((Composite/Label)dtde.getSource())。getText();然后,只需在模型中搜索索引即可插入传输源并根据需要进行更新。 –
你有没有考虑过使用类似[Zest](http://www.eclipse.org/gef/zest/)的东西? – Baz
是的,我有。我希望这是我的最后手段,因为我不想过度使用我的小部件。 – GGrec