1

ユーザー ワークフローのスピードアップを支援する過程で、 TextBoxにフォーカスを設定したいと考えました。queryBox.setFocus(true);まず、ビュー メソッドに行を追加するだけです。しかし、これはうまくいきませんでした。うまくいったのは、呼び出しを延期することでした:

  Scheduler.get().scheduleDeferred(new ScheduledCommand() {

     @Override
     public void execute() {
        queryBox.setFocus(true);
     }
  });

最初の試みと比べて、なぜうまくいったのですか?

アップデート

以下のBaadshahによって提供された参照から、これは既存のGWTの問題であると思われ、「基本的に、setFocus()は、ほとんどの場合、DeferredCommandにラップされていない限り機能しません。」

4

1 に答える 1

2

はい、queryBox.setFocus(true); queryBoxまだ接続されていない場合は機能しませんDOM. 。接続する前にTextBox接続する必要があります。documentfocus

そうです、browserロードには時間がかかりますがDOM、これdelayは私たちには見えません。

loadの(ドキュメントへの添付を意味する)がいつtextbox完了したかは正確にはわかりません。

したがって、を使用することで、レンダリングが終了するまでschedular待機し、レンダリングされた を適用します。some timefocustextbox

同じことに関する興味深い議論があります。

于 2013-04-21T15:22:53.183 に答える