0

GEF接続では、形状の上にZオーダーのデフォルトがあります。

次の正しい方法は何ですか
。1。接続の上にZオーダーで形状を表示しますか?
2.相互の接続のZオーダーを設定しますか?

4

2 に答える 2

3

もちろんできますが、両方の目標を達成する方法を説明しましょう。

LayerConstants.PRIMARY_LAYERGEF / Draw2dは、形状/接続に個別のレイヤーを使用します。これらは、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;
}

2番目の目標を達成するにはConnectionLayer.paintChidren()、すべての接続図がの子図であるため、オーバーライドして接続ペイントアルゴリズムを変更する必要がConnectionLayerあります(デフォルトの実装はから継承することに注意してくださいFigure.paintChidren())。

整数のZオーダープロパティを接続図(接続パーツによって作成されたもの)に追加して、アルゴリズムが実際に正しい順序でペイントするために使用することをお勧めします。次に、接続パーツに相対的な順序付け戦略を実装します。相対的な順序付け戦略は、それぞれの図のZオーダープロパティを更新する責任があります。

于 2013-03-24T12:45:33.357 に答える
0

私はあなたがこれを行うことができるとは思わない。私の知る限り、シェイプと接続は異なるレイヤーにあり、シェイプレイヤーは接続レイヤーの下にあります。接続はすべてフレームワークによって管理されているため、接続のZオーダーも変更できない可能性があります。

GEFのようなフレームワークを使用する場合、自動機能を自由と交換します:-)。

于 2013-03-21T09:29:48.240 に答える