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