5

我正在使用 Gxt。我需要将焦点设置到页面上的第一个启用字段。但是我有很多页面,我想集中这种行为。Gxt 中缺少文档,所以我想知道是否有人遇到过这样的问题并可以帮助我。

现在它在每个组件的类中都是这样的

protected void resetFocus() {
    combobox.focus();
}

@Override
public void show() {
    super.show();
    resetFocus();
}

找到了 com.extjs.gxt.ui.client.aria.FocusManager但绝对不清楚如何使用它。或者也许也可以根据焦点在组件上获取字段链。我可以将resetFocus方法移动到父类。

那样的

protected void resetFocus() {
    *getFocusChain().get(0).focus();*
}
4

2 回答 2

3

根据上一个响应,我通过执行以下操作使其在 GXT3 窗口中工作:

@Override
public void show() {
    super.show();
    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
        @Override
        public void execute() {
            field.focus();
        }
    });
}

这样,当窗口打开时,该字段具有焦点,您可以开始输入。

于 2013-01-17T17:51:42.030 回答
2

渲染延迟后对焦所以你必须使用Scheduler.get().scheduleDeferred方法。或者DeferredCommand在 GWT 1.7 或更早版本上。

使用示例:

Scheduler.get().scheduleDeferred(new ScheduledCommand() {

    @Override
    public void execute() {
        widget.focus();
        widget.el().focus();
        widget.getElement().focus();
    }
});
于 2010-11-23T12:12:30.760 回答