0

DialogBoxGWTを画面の外にドラッグできるという問題の簡単な解決策を探しています。overflow:hiddenスクロールバーを表示したくないので、ホストには CSS ルールがあります。

明らかに、何らかの方法でリスナーをドラッグにアタッチし、それを外に持ち出す動きを防ぐ必要があります。onMouseMoveの 、beginDraggingendDraggingメソッドしか見えませんDialogBox

4

3 に答える 3

1

gwtquery-dnd を試すことをお勧めします。ドラッグ アンド ドロップ プラグインを使用していますが、うまく機能します。探している setContianment(Element elem) のオプションがあります。他のいくつかの機能は、ダイアログボックスをどこかにドッキングしたい場合にスナップできるため、他のウィジェットにスナップできることです。また、ドラッグ用の DialogBox ヘッダーと同様のハンドルを指定する機能もあります。

http://code.google.com/p/gwtquery-plugins/wiki/DragAndDropPluginForGWT開発者

于 2012-08-31T14:10:56.383 に答える
1

com.google.gwt.user.client.ui.DialogBox ソース コードを調査し、必要に応じてすべてのメソッドをオーバーライドできます。そこにドラッグするためのメソッドがいくつかあります。

この問題を他の方法で解決できるかどうかはわかりません。それ以外の場合は、カスタムのドラッグ可能なポップアップ パネルを開発する必要がありますが、これは良い解決策ではないと確信しています。

于 2012-08-31T14:58:14.093 に答える
1

「私たちは」この問題を次の方法で回避しました。

@Override
protected void endDragging(MouseUpEvent event)
{
 int genericMargin = 60;

 int leftMargin = -(this.getOffsetWidth() - genericMargin);
 int lowerMargin = Window.getClientHeight() - genericMargin;
 int rightMargin = Window.getClientWidth() - genericMargin;
 int upperMargin = 0;

 if (this.getAbsoluteLeft() > rightMargin) 
 {this.setPopupPosition(rightMargin, this.getPopupTop()); }

 if (this.getAbsoluteLeft() < leftMargin) 
  { this.setPopupPosition(leftMargin, this.getPopupTop()); }

 if (this.getAbsoluteTop() > lowerMargin) 
 { this.setPopupPosition(this.getPopupLeft(), lowerMargin);}

 if (this.getAbsoluteTop() < upperMargin) 
 { this.setPopupPosition(this.getPopupLeft(), upperMargin);}

 super.endDragging(event);
}

ところで、そのままで正しく動作します!;)

于 2012-10-17T09:00:33.133 に答える