gpt4 book ai didi

java - 无法让 setFocus() 工作

转载 作者:行者123 更新时间:2023-11-29 06:11:24 27 4
gpt4 key购买 nike

我对 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);

关于java - 无法让 setFocus() 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com