2

GEF で作成されたグラフィカル エディターがあります。このエディターでは、要素をドラッグ アンド ドロップし、特定のアンカー ポイントにドラッグ アンド ドロップして接続を作成できます。

ユーザーが物をドラッグしたときにダイアグラムが自動的にスクロールしないことを除いて、すべてが正常に機能します。

ユーザーが何かをドラッグしているときにダイアグラムの端に到達すると、ダイアグラムが自動的にスクロールすることが期待されます。

そのような機能は GEF でサポートされていますか? それを有効にするには、どのクラス/セッターを呼び出す必要がありますか?

直接サポートされていない場合、それを達成するにはどうすればよいですか?

4

2 に答える 2

3

最初のステップは、キャンバスをスクロール可能にすることです。これについては、この本の96 ~ 101ページで説明されています。

FigureCanvasで既に図形を描画しており、および を使用していると仮定するFreeformFigureFreeformLayer、次のことができます。

に を追加しMouseMoveListenerます。メソッドでドラッグが検出されるたびに、 でフィギュアを表示します。FigureEditPartmouseDragEventgetViewer().reveal(EditPart.this)

これにより、Figureドラッグされているときに常に表示されます。

于 2013-09-10T12:48:59.247 に答える
3

最後に GEF をいじってからしばらく経ちました。

ドラッグ アンド ドロップはまったく機能しませんか、それとも負の座標の方向にのみ機能しますか? どのレイアウトを使用していますか?

IIRC では、そのうちの 1 つ (FreeForm?) が負の座標をサポートするさまざまなレイアウトがあったため、負の座標に問題がある場合は、レイアウトを変更してみてください。

これは、スクロール グラフィカル エディター(著者によると ;))の例で、良いヒントになるかもしれません。

org.eclipse.gef.ui.parts.ScrollingGraphicalViewerという名前のクラスも役立ちます。

ただし、コードがわからないため、ヒントのみです。

于 2013-09-05T05:36:46.037 に答える