1

私は 'The Eclipse Graphical Framework (GEF)' 本の例を調べていますが、含まれている Genealogy の例 (Draw2d の章) では図の z オーダーがめちゃくちゃになっているようです。図形をドラッグまたは選択すると、その z オーダーが変更されず、ドラッグされた図形が他の図形の下にドラッグされるという奇妙な/不自然な動作が発生します。

フィギュアが選択されたときにフィギュアの z オーダーを変更して、子リストの一番上に移動し、チャートの z 次元の一番上に表示されるようにしたいと考えています。それを行う最善の方法は何ですか?

4

2 に答える 2

0

フィギュアを削除して再度追加すると、イベント システムが台無しになることがわかりました。たとえば、フィギュアを別の場所にドラッグしたときに、そのフィギュアを前面に移動したい場合、ドラッグが中断されます。そのフィギュアのイベントを取得できなくなります。Figure を一番上に移動するには、次のコードを使用します。

final IFigure child = <figure you want to bring to the front>;
final IFigure parent = child.getParent();
final List children = child.getParent().getChildren();
children.remove( child );
children.add( child );
child.repaint();

これは、子の生のリストを操作して、特定の子を z オーダーの先頭に移動します。次に、この変更を示すために、子の再描画が発行されます。このソリューションは Draw2d に固有のものであり、GEF とは関係ありません。

于 2013-02-19T12:19:24.567 に答える
0

draw2d の Figure の z オーダーは、加算の順序 (一番上の最後の Figure) によって定義されるか、 で設定できますFigure.add

あなたが望むことを行う最も簡単な(しかしおそらくあまり効率的ではない)方法は、図を親から削除して再度追加することだと思います。これにより、最後に追加された図が作成されるため、一番上の図も追加されます

于 2012-02-25T17:59:33.697 に答える