2

画像の一部を選択できるようにするために、を扱ってMouseDownEventいます。この画像に表示されているように、ほとんどのブラウザは、イベントで呼び出されない限り、画像のドラッグを開始します。MouseUpEventImagepreventDefault()

呼び出しの主な欠点はpreventDefault()、フォーカスがたとえばaにある場合、クリックすると削除されたはずTextBoxなのに、そこにとどまるということです。Image

現在ウィジェットを持っているウィジェットからフォーカスを削除する方法、またはにフォーカスを与える方法を見つけることができませんでしたImage。これまでの私の唯一の回避策は、見えない役に立たないものを作成するTextBoxことです。フォーカスを削除したい場合は、フォーカスを表示し、フォーカスを与えて、再び非表示にします。うん。より良い提案はありますか?

4

1 に答える 1

3

画像をフォーカス可能にするには、要素に属性を追加する必要がありますtabindex。次に、メソッドを呼び出してElement.focus()、ユーザーが画像をクリックしたときに画像にフォーカスを置くことができます。

final Image i = new Image("http:...");
i.getElement().setAttribute("tabindex", "0");    
i.addMouseDownHandler(new MouseDownHandler() {
  public void onMouseDown(MouseDownEvent event) {
    event.preventDefault();
    i.getElement().focus();
  }
});

画像をフォーカス可能にする必要がない場合のもう1つの方法は、dragStartイベントを処理し、マウスの上下ハンドラーではなく、ここでデフォルトを防ぐことです。

i.addDragStartHandler(new DragStartHandler() {
  public void onDragStart(DragStartEvent event) {
    event.preventDefault();
  }
});
于 2013-01-21T10:28:23.403 に答える