在GEF中,连接在形状之上是Z顺序默认值。
正确的方法是什么:
1.在连接顶部以Z顺序显示形状?
2.设置连接相对于彼此的Z顺序?
答案 0 :(得分:3)
当然,您可以解释如何实现两个目标:
GEF / Draw2d对形状/连接使用不同的层,它们分别由LayerConstants.PRIMARY_LAYER
和LayerConstants.CONNECTION_LAYER
常量标识。您可以更改形状和连接之间的Z顺序,方法是更改其图层添加到LayeredPane
中RootEditPart
的顺序。
作为示例,以下面的方式覆盖ScalableRootEditPart.createPrintableLayers()
以反转图层绘制:
protected LayeredPane createPrintableLayers() {
LayeredPane pane = new LayeredPane();
Layer layer = new ConnectionLayer();
layer.setPreferredSize(new Dimension(5, 5));
pane.add(layer, CONNECTION_LAYER);
layer = new Layer();
layer.setLayoutManager(new StackLayout());
pane.add(layer, PRIMARY_LAYER);
return pane;
}
要实现第二个目标,您必须通过覆盖ConnectionLayer.paintChidren()
来修改连接绘制算法,因为所有连接数都是ConnectionLayer
的子图(请注意,默认实现继承自{{ 1}})。
我建议你将连接数字(由你的连接部分创建的连接数字)添加一个整数Z顺序属性,算法使用它来按照正确的顺序实际绘制它们。然后在您的连接部分中实现相对排序策略,该策略将负责在各自的数字中更新Z顺序属性。
答案 1 :(得分:0)
我认为你不能这样做。据我所知,形状和连接位于不同的层中,形状层位于连接层下方。您可能无法更改连接的Z顺序,因为它全部由框架
管理当使用像GEF这样的框架时,你可以自动交换自动功能: - )。