Gxt焦点管理

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

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

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

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

像这样的Smth

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

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

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

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

渲染一些延迟后重点所以你必须使用Scheduler.get()。scheduleDeferred方法。 或者在gwt 1.7或之前的DeferredCommand。

使用示例;

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

 @Override public void execute() { widget.focus(); widget.el().focus(); widget.getElement().focus(); } 

});