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?
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?
当然可以,让我解释一下如何实现这两个目标:
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
(请注意,默认实现继承自Figure.paintChidren()
)。
我建议您向连接图形(由您的连接部件创建的图形)添加一个整数 Z 顺序属性,以供算法以正确的顺序实际绘制它们。然后在您的连接部件中实施相对排序策略,该策略将负责更新各自图中的 Z-order 属性。
我不认为你能做到这一点。据我所知,形状和连接位于不同的层中,形状层位于连接层下方。您可能也无法更改连接的 Z 顺序,因为它全部由框架管理
使用 GEF 之类的框架时,您可以用自动功能换取自由:-)。