簡體   English   中英

無法使setFocus()工作

[英]Can't get setFocus() to work

我對setFocus()有問題。 為什么在textBox上不起作用?

這是我的代碼:

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);
    }
}

這樣做的問題是,必須先在瀏覽器中繪制文本框,然后才能對其運行setFocus()。 這是gwt建議的最新消息-

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    public void execute () {
        textBox.setFocus(true);
    }
   });

使用此代碼,而不是簡單地調用setFocus(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM