如何在GEF中设置连接的Z顺序?

时间:2013-03-19 15:54:11

标签: eclipse-gef

在GEF中,连接在形状之上是Z顺序默认值。

正确的方法是什么:
1.在连接顶部以Z顺序显示形状?
2.设置连接相对于彼此的Z顺序?

2 个答案:

答案 0 :(得分:3)

当然,您可以解释如何实现两个目标:

GEF / Draw2d对形状/连接使用不同的层,它们分别由LayerConstants.PRIMARY_LAYERLayerConstants.CONNECTION_LAYER常量标识。您可以更改形状和连接之间的Z顺序,方法是更改​​其图层添加到LayeredPaneRootEditPart的顺序。

作为示例,以下面的方式覆盖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这样的框架时,你可以自动交换自动功能: - )。

相关问题