2

GWT では、要素をドラッグするときに「mouseUp」イベントを取得するにはどうすればよいですか?

私は次の流れを取得したいと思います:

  • マウスダウン
  • マウス移動
  • ...もう少しmouseMove可能性があります...
  • マウスアップ

カーソルを動かしていないときに「mouseDown」と「mouseUp」を取得できますが、カーソルを動かした瞬間に「mouseUp」イベントが発生しなくなりました。

event.preventDefault();「mouseDown」と「mouseMove」の両方のハンドラーを入れようとしましたが、役に立ちませんでした。

助けてください。

4

3 に答える 3

5

DnD の場合、通常はsetCapture. ドラッグをやめたときも忘れないでくださいreleaseCapture(マウスアップやエスケープキーなど)。

のコードを見てくださいcom.google.gwt.user.client.ui.DialogBox。これはまさにそれを行います。

于 2012-10-04T07:31:57.607 に答える
1

もちろん、MouseUp ハンドラーは、widtet を使用している間だけ機能します。これが、ウィジェットから移動するとすぐに MouseUp イベントに反応しないため、ドラッグ アンド ドロップに使用できない理由です。

簡単な例を次に示します。

package XXX.client.XXXXXX;

import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseUpHandler;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;

public class MouseUp {
    public MouseUp(){
        Label label = new Label("hallo");
        label.getElement().getStyle().setProperty("backgroundColor","red");
        RootPanel.get().add(label);

        label.addMouseDownHandler(new MouseDownHandler() {

            @Override
            public void onMouseDown(MouseDownEvent event) {
                Label label = new Label("onMouseDown");
                RootPanel.get().add(label);             
            }
        });
        label.addMouseUpHandler(new MouseUpHandler() {

            @Override
            public void onMouseUp(MouseUpEvent event) {
                Label label = new Label("onMouseUp");
                RootPanel.get().add(label);                     
            }
        });
    }
}

ドラッグ アンド ドロップ機能を使用する場合は、以下を参照することをお勧めします

于 2012-10-04T07:32:04.990 に答える
0

MouseDown イベント内 (つまり、onMouseDown()) に MouseUp ハンドラを追加してみてください。

于 2012-10-04T07:10:14.310 に答える