Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse Draw2d。更改IFigure的z顺序_Java_Swt_Eclipse Gef_Draw2d - Fatal编程技术网

Java Eclipse Draw2d。更改IFigure的z顺序

Java Eclipse Draw2d。更改IFigure的z顺序,java,swt,eclipse-gef,draw2d,Java,Swt,Eclipse Gef,Draw2d,我正在阅读《EclipseGraphicalFramework(GEF)》一书中的示例,其中包含的系谱示例(Draw2d章节)似乎把图形的z顺序搞乱了。当拖动或选择地物时,其z顺序保持不变,这会导致奇怪/不自然的行为,其中拖动的地物可以在其他地物下拖动 我希望能够在选择图形时更改图形的z顺序,以便将其移动到子列表的顶部,并显示在图表z维度的顶部。最好的方法是什么 draw2d中图形的z顺序可以通过添加顺序(顶部最后一个图形)定义,也可以在图中设置。添加 我想做你想做的事情最简单(但可能不是很有效

我正在阅读《EclipseGraphicalFramework(GEF)》一书中的示例,其中包含的系谱示例(Draw2d章节)似乎把图形的z顺序搞乱了。当拖动或选择地物时,其z顺序保持不变,这会导致奇怪/不自然的行为,其中拖动的地物可以在其他地物下拖动


我希望能够在选择图形时更改图形的z顺序,以便将其移动到子列表的顶部,并显示在图表z维度的顶部。最好的方法是什么

draw2d中图形的z顺序可以通过添加顺序(顶部最后一个图形)定义,也可以在
图中设置。添加


我想做你想做的事情最简单(但可能不是很有效)的方法是从父图形中删除图形并再次添加。这将使其成为添加的最后一个图形,因此也是顶部图形

我发现删除该图形并向后添加将破坏事件系统,例如,如果您的意图是,当一个图形被拖动到另一个位置时,您希望将该图形移到前面,拖动被中断,您将不再获得该地物的任何事件。若要将地物置于顶部,请使用以下代码:

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();
final IFigure child=;
final IFigure parent=child.getParent();
最终列表子项=child.getParent().getChildren();
儿童。移除(儿童);
添加(child);
child.repaint();

这是操纵子对象的原始列表,将特定子对象移动到z顺序的前面。然后,发出子对象的重新绘制以显示此更改。此解决方案特定于Draw2d,与GEF无关。

有趣。昨天我试图调试GEF,试图理解为什么会发生这种情况,但无法理解。我找到了另一种方法,那就是在
EditPart
上安装一个新的
resizeableeditpolicy
,覆盖
showSelection
方法,并在父
EditPart
上调用
reorderChild
,但在这种情况下,它会破坏拖动时的resize反馈。。。。哦,好吧。如果我发现了什么,我会再发一次。