1

在帮助加快用户工作流程的过程中,我想将焦点设置为TextBox。我从简单地将行添加queryBox.setFocus(true);到视图方法开始。然而,这并没有奏效。有效的是推迟通话:

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

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

为什么它起作用了,与我的第一次尝试相比?

更新

从下面 Baadshah 提供的参考资料来看,这似乎是一个现有的 GWT 问题,根据该问题,“基本上,除非它大部分时间都包含在 DeferredCommand 中,否则 setFocus() 将不起作用。”

4

1 回答 1

2

是的,queryBox.setFocus(true); 如果queryBox尚未附加到DOM. TheTextBox需要附加到 the document,则将无法工作focus

你是对的,虽然这对我们来说是不可见的,但browser加载确实需要时间。DOMdelay

我们完全不知道load(我的意思是附加到文件)的textbox完成时间。

因此,通过使用schedular我们让我们自己等到some time渲染完成,应用focuson render textbox

这是一个对此感兴趣的讨论

于 2013-04-21T15:22:53.183 回答