8

我的输入文本框有这个类:

    class InputTextBox extends FlowPanel { 
      public InputTextBox(String labelText) { 
        super(); 
        Label label = new Label(labelText); 
        TextBox input = new TextBox(); 
        this.add(label); 
        this.add(input); 
        this.addStyleName("myBox"); 
      }


    }

如何在该文本框中设置焦点,以便在调用 onmoduleload 时光标出现在文本框中?添加成员函数似乎会引发许多错误。

      public void setFocus(boolean b) {
        this.setFocus(b);

      } 
4

3 回答 3

3

您应该将此块添加到构造函数或 onLoad 方法:

Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
    //call setFocus method here:
    input.setFocus(true);
}});
于 2014-05-11T10:15:03.340 回答
2

为您的 TextBox 创建一个属性字段,并在您的 setFocus 方法中调用textBox.setFocus(true),或者您调用 TextBox 属性的任何内容。

于 2012-06-11T00:27:45.027 回答
0

像这样更改您的代码

class InputTextBox extends FlowPanel {
    private Label label;
    private TextBox textBox;

    public InputTextBox(String labelText) { 
        super(); 
        label = new Label(labelText); 
        textBox = new TextBox(); 
        this.add(label); 
        this.add(input); 
        this.addStyleName("myBox"); 
    }

    public void setFocus(boolean focus) {
        textBox.setFocus(focus);
    }

    public String getText() {
        return textBox.getText();
    }
}

像这样使用它

private InputTextBox newUser = new InputTextBox("Username");
newUser.setFocus(true); // Set focus
String value = newUser.getText(); // get text
于 2012-06-13T15:03:40.497 回答