2012-02-24 68 views
1

我正在通过“Eclipse图形框架(GEF)”一书中的示例进行工作,并且所包含的族谱示例(Draw2d章节)似乎具有z序列的数字混乱。拖动或选择图形时,其顺序保持不变,这会导致奇怪/不自然的行为,拖动的图形可能会拖到其他图形下。Eclipse Draw2d。更改z的顺序IFigure

我希望能够在数字被选中时更改图形的z顺序,以便它们移动到子列表的顶部并出现在图表的z维顶部。什么是最好的方式来做到这一点?

回答

0

draw2d中的数字的z次序是通过加法的顺序(上图中的最后一个数字)定义的,或者可以在Figure.add中设置。

我想最简单的(但可能不是非常有效的)做你想做的是从父母中删除数字并再次添加它。这将使它成为最后一个数字,因此也是顶部数字

+0

我试过了,它会导致拖动冻结。 – Mr1159pm 2012-03-07 16:54:11

+0

有趣。我试图调试GEF昨天试图了解为什么会发生这种情况,但无法理解。我发现了另一种方法,在EditPart上安装一个新的'ResizableEditPolicy',覆盖'showSelection'方法,然后在父'EditPart'上调用'reorderChild',但在这种情况下,调整大小反馈拖动被破坏....噢,好吧。如果我找到了我会再次发布的内容。 – vainolo 2012-03-11 07:58:26

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顺序的氟利昂。然后,重新绘制孩子以显示这一变化。此解决方案特定于Draw2d,与GEF无关。