0

In GEF connections are in the Z-order default on top of the shapes.

What is the correct way to:
1. Show a shape in the Z-order on top of a connection?
2. Set the Z-order of the connections relative to each other?

4

2 回答 2

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(请注意,默认实现继承自Figure.paintChidren())。

我建议您向连接图形(由您的连接部件创建的图形)添加一个整数 Z 顺序属性,以供算法以正确的顺序实际绘制它们。然后在您的连接部件中实施相对排序策略,该策略将负责更新各自图中的 Z-order 属性。

于 2013-03-24T12:45:33.357 回答
0

我不认为你能做到这一点。据我所知,形状和连接位于不同的层中,形状层位于连接层下方。您可能也无法更改连接的 Z 顺序,因为它全部由框架管理

使用 GEF 之类的框架时,您可以用自动功能换取自由:-)。

于 2013-03-21T09:29:48.240 回答