我正在研究“Eclipse图形框架(GEF)”一书中的示例,并且包含的Genealogy示例(Draw2d章节)似乎已经弄乱了数字的z顺序。当拖动或选择一个图形时,其z顺序保持不变,这会导致奇怪/不自然的行为,其中拖动的图形可以在其他图形下拖动。
我希望能够在选择数字时更改数字的z顺序,以便将它们移动到子列表的顶部并显示在图表的z维度的顶部。最好的方法是什么?
答案 0 :(得分:0)
draw2d中数字的z顺序由加法顺序(最后一个数字在顶部)定义,或者可以在Figure.add
中设置。
我想最简单(但可能不是很有效)的方法是从父母那里删除数字并再次添加。这将使它成为最后一个数字,因此也是最重要的数字
答案 1 :(得分:0)
我发现删除图形并添加回来会搞砸事件系统,例如,如果你的意图是,当一个数字被拖到另一个位置时,你想把这个数字带到前面,拖动被中断,您将不再获得该数字的任何事件。要将图形置于顶部,请使用以下代码:
final IFigure child = <figure you want to bring to the front>;
final IFigure parent = child.getParent();
final List children = child.getParent().getChildren();
children.remove( child );
children.add( child );
child.repaint();
这是操纵孩子的原始列表,将特定孩子移动到z-order的前端。然后,发出孩子的重绘以显示这种变化。此解决方案特定于Draw2d,与GEF无关。