首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使setFocus()工作

无法使setFocus()工作
EN

Stack Overflow用户
提问于 2011-07-15 17:39:52
回答 1查看 1.2K关注 0票数 1

我对setFocus()有一个问题。为什么它在textBox上不起作用?

这是我的代码:

代码语言:javascript
复制
package com.test.test1;

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.user.client.ui.FocusWidget;

public class Logowanie extends Composite {
    public Logowanie(final Spr spr) {

        VerticalPanel verticalPanel = new VerticalPanel();
        initWidget(verticalPanel);

        Label lblZalogujSi = new Label("Zaloguj si\u0119");
        lblZalogujSi.setStyleName("title");
        verticalPanel.add(lblZalogujSi);

        FlexTable flexTable = new FlexTable();
        verticalPanel.add(flexTable);

        Label lblLogin = new Label("Login:");
        flexTable.setWidget(0, 0, lblLogin);

        TextBox textBox = new TextBox();
        textBox.setFocus(true);

        flexTable.setWidget(0, 1, textBox);

        Label lblHaso = new Label("Has\u0142o:");
        flexTable.setWidget(1, 0, lblHaso);

        TextBox textBox_1 = new TextBox();
        flexTable.setWidget(1, 1, textBox_1);

        CheckBox chckbxZapamitajMnie = new CheckBox("Zapami\u0119taj mnie na tym komputerze");
        flexTable.setWidget(2, 1, chckbxZapamitajMnie);

        Button btnZaloguj = new Button("Zaloguj");

        KeyPressHandler kph = new KeyPressHandler() {
            public void onKeyPress(KeyPressEvent event) {
                if (event.getCharCode() == KeyCodes.KEY_ENTER){
                    spr.login();
                }
            }
        };

        textBox.addKeyPressHandler(kph);
        textBox_1.addKeyPressHandler(kph);

        btnZaloguj.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                spr.login();
            }
        });
        flexTable.setWidget(3, 1, btnZaloguj);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-15 18:07:49

这样做的问题是,需要在浏览器中绘制文本框,然后才能对其运行setFocus()。这是gwt建议的最新结果-

代码语言:javascript
复制
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    public void execute () {
        textBox.setFocus(true);
    }
   });

使用此代码,而不是简单地调用setFocus(true);

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6705199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档