无法在GWT应用程序中将焦点设置在TextBox上

she*_*rry 22 gwt textbox

这不应该让我如此痛苦,但确实如此.这是一个非常奇怪的问题.在GWT应用程序中,我有两个.java文件,login.java和application.java.在login.java中,我正在创建一个用户登录页面,如果验证了用户名和密码,则用户登录到应用程序并且application.java从这里开始.

现在正在申请中.java的onModuleLoad()这就是我从登录页面开始的方式.

public void onModuleLoad() {
  Login login = new Login();
  login.textBoxUsername.setFocus(true);
  RootLayoutPanel.get().add(login);}
Run Code Online (Sandbox Code Playgroud)

这很好用,除了在页面加载时无法将注意力集中在用户名TextBox上的微小问题.我试过了我能想到的东西.但焦点只是没有在TextBox上设置.如果有人可以建议解决方案,请做.非常感谢您的帮助.

解决方案 :(如果它可以帮助任何人面临同样的问题)

final Login login = new Login();
  Scheduler.get().scheduleDeferred(new ScheduledCommand() {
        public void execute () {
            login.textBoxUsername.setFocus(true);
        }
   });

  RootLayoutPanel.get().add(login);
Run Code Online (Sandbox Code Playgroud)

Pet*_*ego 33

尝试使用Scheduler.scheduleDeferred():

public void onModuleLoad() {
    Login login = new Login();
    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand () {
        public void execute () {
            login.textBoxUsername.setFocus(true);
        }
    });
    RootLayoutPanel.get().add(login);       
}
Run Code Online (Sandbox Code Playgroud)

更新:回答更新以使用Scheduler.get().scheduleDeferred()而不是DeferredCommand,不推荐使用.